前言
默认的日期和时间格式由参数NLS_DATE_FORMAT
控制
如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现
1. 会话级别
在当前会话中设置日期格式,这只会影响当前会话,而不会影响其他用户的会话
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
验证会话级别的设置
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
2. 系统级别
更改初始化参数文件(spfile或pfile)来永久修改系统级别的默认日期格式
- 使用spfile(服务器参数文件):
ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS' SCOPE=SPFILE;
- 使用pfile(文本参数文件):
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
重启数据库生效:
SHUTDOWN IMMEDIATE; STARTUP;
再次验证:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
3. 环境配置
客户端机器上设置环境变量,例如:
- Windows: 在环境变量中添加NLS_DATE_FORMAT
- Linux/Unix: 在
.bash_profile
或.profile
中添加:export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
4. 函数格式化
在查询中使用TO_CHAR函数
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM DUAL;
5. 总结
常用日期格式示例
- YYYY-MM-DD: 2024-06-20
- DD-MON-YYYY:20-JUN-2024
- YYYY/MM/DD HH24:MI:SS:2024/06/20 14:30:00