修改sqlplus中显示时间日期的格式
2010-01-22 14:48
351 查看
在数据库里查询数据的时候,我们经常会遇到一些和日期时间格式的问题,比如显示语言,显示格式等。可能数据在数据库里面存放的格式是:YYYY-MM-DD HH24:MI:SS, 但我们查询出来的却是 22-1月-10, 第一反应可能是字符集出了问题。 其实还有一个原因就是系统环境变量没有设置,下面我们就来看下有关这个的配置问题。
1. 在session 中修改
1. 1 中英文的切换
SQL> alter session set NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
--------------
22-1月 -10
SQL> alter session set NLS_DATE_LANGUAGE='AMERICAN';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
------------
22-JAN-10
SQL>
1.2 时间格式的切换
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-01-22 14:30:21
SQL>
2. 在操作系统中设置相关环境变量
2.1 windows 平台
C:> SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
C:> SET NLS_DATE_LANGUAGE=AMERICAN
C:>SEET NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE;
注意:这里YYYY-MM-DD HH24:MI:SS不能加引号,但在unix系统中要加
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-01-22 14:33:21
这样改了以后只对当前的控制台窗品有效,如果不想每次都设置,就修改系统/用户环境变量,新增一个变量,比如nls_date_format,值为YYYY-MM-DD HH24:MI:SS。 就可以了。
2.2 Linux 平台
$export NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”
$export NLS_DATE_LANGUAGE=”AMERICAN”
$export NLS_DATE_LANGUAGE=”SIMPLIFIED CHINESE”
注:在unix系统中要加引号
Export 只对当前session 有效,如果要长期保存,就需要修改.bash_profile 参数,比如Oracle用户的,/home/oracle/.bash_profile, 在该文件中加入相关参数以后就可以了。
NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”;
export NLS_DATE_FORMAT;
NLS_DATE_LANGUAGE=”AMERICAN”;
export NLS_DATE_LANGUAGE;
NLS_DATE_LANGUAGE=”SIMPLIFIED CHINESE”;
export NLS_DATE_LANGUAGE;
补充:
修改时间日期的格式并不单是显示上的问题,而是在内部存储的值也会被覆盖:
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
----------
2010-1-22
注:把参数NLS_DATE_FORMAT设置成yyyy-mm-dd,查询的过滤条件中date类型的字段就可以跟日期控件生成的时间字符串直接比较了,非常方便的,如果对查询速度要求高,可以给日期类型的字段创建一个基于函数的索引。
1. 在session 中修改
1. 1 中英文的切换
SQL> alter session set NLS_DATE_LANGUAGE='SIMPLIFIED CHINESE';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
--------------
22-1月 -10
SQL> alter session set NLS_DATE_LANGUAGE='AMERICAN';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
------------
22-JAN-10
SQL>
1.2 时间格式的切换
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-01-22 14:30:21
SQL>
2. 在操作系统中设置相关环境变量
2.1 windows 平台
C:> SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
C:> SET NLS_DATE_LANGUAGE=AMERICAN
C:>SEET NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE;
注意:这里YYYY-MM-DD HH24:MI:SS不能加引号,但在unix系统中要加
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-01-22 14:33:21
这样改了以后只对当前的控制台窗品有效,如果不想每次都设置,就修改系统/用户环境变量,新增一个变量,比如nls_date_format,值为YYYY-MM-DD HH24:MI:SS。 就可以了。
2.2 Linux 平台
$export NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”
$export NLS_DATE_LANGUAGE=”AMERICAN”
$export NLS_DATE_LANGUAGE=”SIMPLIFIED CHINESE”
注:在unix系统中要加引号
Export 只对当前session 有效,如果要长期保存,就需要修改.bash_profile 参数,比如Oracle用户的,/home/oracle/.bash_profile, 在该文件中加入相关参数以后就可以了。
NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”;
export NLS_DATE_FORMAT;
NLS_DATE_LANGUAGE=”AMERICAN”;
export NLS_DATE_LANGUAGE;
NLS_DATE_LANGUAGE=”SIMPLIFIED CHINESE”;
export NLS_DATE_LANGUAGE;
补充:
修改时间日期的格式并不单是显示上的问题,而是在内部存储的值也会被覆盖:
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
----------
2010-1-22
注:把参数NLS_DATE_FORMAT设置成yyyy-mm-dd,查询的过滤条件中date类型的字段就可以跟日期控件生成的时间字符串直接比较了,非常方便的,如果对查询速度要求高,可以给日期类型的字段创建一个基于函数的索引。
相关文章推荐
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- 修改sqlplus中显示时间日期的格式
- silverlight 批量修改日期控件的时间显示格式
- 修改windows server 2008 时间和日期格式 IIS配置后显示错误
- 修改windows server 2008 时间和日期格式 IIS配置后显示错误
- linux 显示、修改系统日期和时间
- 在jqueryEasyUI界面将时间以日期加时分秒的格式显示
- 我使用过的Linux命令之date - 显示、修改系统日期时间
- Eclipse 修改注释的 date time 日期时间格式,即${date}变量格式
- c# Eval函数中将日期显示的格式修改为yyyy-MM-dd形式
- linux下修改ls显示的时间格式
- Quartz动态添加、修改和删除定时任务时间的方法以及日期转换cron表达式时间格式工具类
- 浅析GridView中显示时间日期格式的问题
- Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法