今天想设置一下NLS_DATE_FORMAT参数来更改一下date参数的输出格式,但是遇到了问题:
SQL> select sysdate from dual;
SYSDATE
---------
07-NOV-08
刚开始SPFILE里没有配置NLS_DATE_FORMAT参数的,用了ALTER SYSTEM ... SCOPE=SPFILE居然报错:
SQL> alter system set nls_date_format='YYYY-MM-DD' scope=spfile;
alter system set nls_date_format='YYYY-MM-DD' scope=spfile
ORA-02096: specified initialization parameter is not modifiable with this option
但是使用ALTER SESSION是可以的:
SQL> alter session set nls_date_format='yyyy-mm-dd';
Session altered.
SQL> select sysdate from dual;
SYSDATE
----------
2008-11-07
在查阅文档后,发现这个参数确实不能通过ALTER SYSTEM命令来修改:
You can alter the default value of NLS_DATE_FORMAT by:
■ Changing its value in the initialization parameter file and then restarting the
instance
■ Using an ALTER SESSION SET NLS_DATE_FORMAT statement
--《Globalization Support Guide》
修改了SPFILE,加进了NLS_DATE_FORMAT参数:
SQL> select name,value,isspecified from v$spparameter where name='nls_date_format';
NAME VALUE ISSPEC
---------- ---------- -------------------------
nls_date_format YYYY-MM-DD TRUE
虽然Oracle里的参数换了,但是查询后的显示结果任然是一样的:
SQL> select sysdate from dual;
SYSDATE
---------
07-NOV-08
WINDOWS系统,要修改注册表,machine/software/oracle/home0里把nls_date_format的值改成yyyy-mm-dd,没有的话就新建一个字符串值(linux中,在.bash_profile中加入export NLS_DATE_FORMAT,Windows也可以设置环境变量),查询正常:
SQL> select sysdate from dual;
SYSDATE
----------
2008-11-07
看来NLS_DATE_FORMAT参数主要还是受到OS的影响,每次登录时会将OS的NLS_DATE_FORMAT参数加载进去。
基本上除了修改环境变量就只能通过alter session来修改了,暂时还没有找到好一点的办法。
要注意并不单是显示上的问题,而是在内部存储的值也会被覆盖:
SQL> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual
*
ERROR at line 1:
ORA-01861: literal does not match format string
在没有修改环境变量或session参数时,这个语句是无法执行的。修改后可以执行:
SQL> select to_date(to_char(sysdate,'yyyy-mm-dd')) from dual;
TO_DATE(TO
----------
2008-11-10
注:把参数NLS_DATE_FORMAT设置成yyyy-mm-dd,查询的过滤条件中date类型的字段就可以跟日期控件生成的时间字符串直接比较了,非常方便的,如果对查询速度要求高,可以给日期类型的字段创建一个基于函数的索引。
两种方式:设置环境变量;修改注册表。
分享到:
相关推荐
Oracle的NLS_DATE_FORMAT设置(日期格式设置)_ITPUB博客.mhtml
本文将详细介绍如何解决ORA-01843与NLS_DATE_FORMAT问题,需要的朋友可以参考下
通过设置init.ora文件的NLS_DATE_FORMAT参数来取代日期格式,否则查询时,日期以 DD-MON-YY格式表示,如13-APR-99表示1999.4.13 NUMBER可变长度数值列,允许值为0、正数和负数。NUMBER值通常以4个字节或更少的字节...
1、本软件可作为简单的Oracle10g客户端使用,包括:tnsping、exp、imp、sqlldr、sqlplus、tkprof(新增)等功能,如对客户端功能有更高的使用要求,请安装...>在注册表中加入NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT等环
1、本软件可作为简单的Oracle10g客户端使用,包括:tnsping、exp、imp、sqlldr...>在注册表中加入NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT等环境变量 >修改了注册表中Oracle_Home写死路径的BUG >完善一些错误消息提示
NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM NLS_...
TO_CHAR(date[,’format_model'[,nlsparams]]) 第二个参数可以省略,不指定格式,按系统默认格式输出。 区分大小写。 使用FM(在格式控制符前添加)符号可以去掉空格或是首位的零。 如果指定了NLSPARAMS,则它控制...
1 前言 2 2 总纲 2 第一掌 避免对列的操作 3 ...第十三掌 使用nls_date_format 8 第十四掌 使用基于函数的索引 8 第十五掌 基于函数的索引要求等式匹配 9 第十六掌 使用分区索引 9 第十七掌 使用位图索引 9
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 2、查看具体的被锁时间 SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE TEST ...
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 2、查看具体的被锁时间 SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE ...
找到账号被锁按时候 哄骗sqlplus或者sqldeveloper,查询账号被锁定的时候,相干语句如下: –批改当前会话的日期显示格局 alter session set nls_date_format = “”yyyy-MM-dd hh24:mi:ss””; –查询被锁定账号的...
2、验证archive log是否接收和applied SQL> alter session set nls_datE_format='YYYY-MM-DD HH24:MI:SS'; SQL> select SEQUENCE#,DEST_ID,ARCHIVED,APPLIED,DELETED,STATUS,FIRST_TIME from v$archived_log order ...
nls_date_format: 说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该参数的默认值由 NLS_TERRITORY 确定。该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值...
/* This Query will be sent directly after the first connection Example: var $ConnectQuery="ALTER SESSION SET nls_date_language=german nls_date_format=’DD.MM.RRRR’"; -> Set the date format for this ...
讲解了关于jsp+oracel的实例 cmd下指令: exp jsp/jsp@orcl file=c:\jsp.dmp log=c:\jsp....alter session set NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss' cmd下指令: sqlldr userid=jsp/jsp control=C:\input.ctl
* Export Tables would change nls_date_format in single session mode and dual session mode * Auto Replace now supports Undo to continue with "non replaced" text * Debugger can now show PL/SQL Table ...
(4) ALTET SESSION SET NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’ Ch6 (1) ALTER TABLESPACE USER ADD DATAFILE ‘D:\ORACLE\ORADATA\ORCL\userdata03.dbf’ SIZE 50M’; (2) ALTER TABLESPACE EXAMPLE ...
alter session set nls_date_format='yyyymmddhh24miss'; 8.怎么可以看到数据库有多少个tablespace? select * from dba_tablespaces; 9.如何显示当前连接用户? SHOW USER 10.如何测试SQL语句执行所用的时间? SQL>...
§2.5.11 SHOW ALL(列出所有参数) 85 §2.6 格式化输出 87 §2.6.1 一般数据的格式化输出 87 §2.6.2 日期的格式化输出 88 §2.7 加标题 89 §2.8 建立简单报告 90 §2.9 输入变量 91 第三章 表及索引的定义操作 94 ...