一、日期显示格式的定义
在oracle中,可以通过定义日期格式来控制日期类数据的输出,比如显示年、显示月、显示全日期等等,下面的例子,以24小时全日期的方式来显示当前的系统日期:
09:47:19 SYS@vbox88in*SQL>select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2019-11-13 09:47:36
oracle中全部的日期格式如下:
日期字段 | 格式 | 说明 |
---|---|---|
年 | YY | 两位年,范围从00~99,如 07 |
RR | 两位年,范围从50~49,跨越了一个世纪 | |
YYY | 三位年 | |
YYYY | 四位年 | |
月 | MM | 两位月份,如11 |
RR | 两位年,范围从50~49,跨越了一个世纪 | |
mon | abbreviated 字符集表示,中文显示11月,英文显示nov | |
month | spelled out 字符集表示,中文显示11月,英文显示november | |
日 | DD | 当月第几天 |
DDD | 当年第几天 | |
day | 当周第几天全写,从周日开始,周日为1,周六为7;中文显示值:星期五;英文显示值:friday | |
dy | 当周第几天简写,中文显示值:星期五,英文显示值:fri | |
时 | HH24 | 24小时制显示时间 |
HH | 12小时制显示时间 | |
分 | MI | 60进制显示分 |
秒 | SS | 60进制显示秒 |
毫秒 | ff | 显示毫秒,时间格式必须是timestamp |
季度 | Q | 当年第几季度,显示1~4 |
周 | W | 当月第几周 |
WW | 当年第几周 |
二、默认日期显示格式的修改
2.1 通过系统变量修改默认日期显示格式
通过修改操作系统变量NLS_DATE_FORMAT可以达到修改默认日期显示格式的目的,比如,我们在linux系统环境下执行:
[oracle@oracle_server ~]$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
[oracle@oracle_server ~]$ sqlplus scott/scott
SQL*Plus: Release 11.2.0.3.0 Production on 星期三 11月 13 10:43:13 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
10:43:13 SCOTT@vbox88in*SQL>select sysdate from dual;
SYSDATE
-------------------
2019-11-13 10:43:26
已用时间: 00: 00: 00.00
10:43:26 SCOTT@vbox88in*SQL>
当然,如果需要linux开机有效,我们可以在oracle用户下面的.bash_profile文件增加以下内容,重新登录即可生效:
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS '
2.2 临时修改当前会话中的日期输出格式
在sqlplus中执行:
SQL> alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
2.3 以管理员身份修改props$表
以管理员身份登陆sqlplus,然后执行:
update props$ set value = 'YYYY-MM-DD HH24:MI:SS' where parameter = 'NLS_DATE_FORMAT';