查询各个级别nls_date_format
-
select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT';
显示:NLS_DATE_FORMAT DD-MON-RR -
select * from nls_database_parameters where parameter = 'NLS_DATE_FORMAT';
显示:NLS_DATE_FORMAT null -
select * from nls_instance_parameters where parameter = 'NLS_DATE_FORMAT';
显示:NLS_DATE_FORMAT null
设置nls_date_format
- 首先,介绍一下NLS参数相关的三个视图。
NLS_SESSION_PARAMETERS、NLS_DATABASE_PARAMTERS、NLS_INSTANCE_PARAMETERS
NLS参数分session/ instance/ database三个级别
对同一个参数在三个级别都设了对应值,那么
优先级:session > instance > database
2)其次,设定nls_date_format的值
①session级别设定值:
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
设定之后再查询会发现nls_session_parameters视图中nls_date_format的值已经变了,而nls_instance_parameters、nls_database_parameters视图中的值没有变。
session级别——如果只是希望自己看到某种格式而不影响其他人看到的结果。
②instance级别设定值:
alter system set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
此级别的值在oracle9i以后就不允许设定了。
③database级别设定值:
oracle不允许设定此级别的参数值,也没有提供设定语句。
更改日期类型格式化
目的:减少客户端对时间字段(字符串,日期)格式化
select name, isses_modifiable, issys_modifiable, isinstance_modifiable from v$parameter where name = 'nls_date_format'; -- 查看个级别参数是否可设置
-- 显示:nls_date_format TRUE FALSE FALSE
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; -- 然后执行insert语句而无需使用to_date函数
--alter session set nls_date_format = 'DD-MON-RR';
select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT';