插件窝 干货文章 Oracle时间显示方式修改技巧

Oracle时间显示方式修改技巧

修改 格式 YYYY 时间 305    来源:    2025-04-09

Oracle时间显示方式修改技巧

基本时间格式修改

Oracle提供了多种方式来修改时间显示格式:

1. 使用TO_CHAR函数转换显示格式

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM dual;

2. 修改会话级别的NLS_DATE_FORMAT参数

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

3. 常用格式说明符

格式代码 说明 示例
YYYY 4位年份 2023
YY 2位年份 23
MM 月份(01-12) 07
MON 月份缩写 JUL
MONTH 月份全名 JULY
DD 日期(01-31) 15
D 星期几(1-7) 3
DY 星期缩写 WED
DAY 星期全名 WEDNESDAY
HH24 24小时制(00-23) 14
HH 12小时制(01-12) 02
MI 分钟(00-59) 30
SS 秒(00-59) 45
FF 小数秒 123456

高级时间格式设置

1. 包含时区信息

SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM') FROM dual;

2. 季度显示

SELECT TO_CHAR(SYSDATE, 'YYYY"年"Q"季度"') FROM dual;

3. 自定义文字

SELECT TO_CHAR(SYSDATE, '"今天是"YYYY"年"MM"月"DD"日"') FROM dual;

永久性修改时间格式

1. 修改系统级参数(需要DBA权限)

ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' SCOPE=SPFILE;

修改后需要重启数据库生效。

2. 在环境变量中设置

可以在Oracle用户的.bash_profile(或类似文件)中添加:

export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

注意事项

  1. 会话级别的修改只影响当前会话
  2. 系统级修改会影响所有新会话
  3. 某些客户端工具(如SQL*Plus)有自己的默认格式设置
  4. 对于TIMESTAMP类型,需要使用NLS_TIMESTAMP_FORMAT参数

常见问题解决

问题1:时间显示不包含时间部分

解决方案:

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

问题2:需要显示毫秒

解决方案:

SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF') FROM dual;

问题3:不同语言环境下的月份/星期显示

解决方案:

ALTER SESSION SET NLS_LANGUAGE='AMERICAN'; -- 或 'SIMPLIFIED CHINESE'