Oracle中的日期操作

一、日期显示格式的定义

  在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';

你可能感兴趣的:(Oracle数据库开发)