Oracle数据库插入日期格式字符串给date类型字段,nls_date_format参数值作用

查询各个级别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';

你可能感兴趣的:(Oracle数据库插入日期格式字符串给date类型字段,nls_date_format参数值作用)