Oracle提供了多种方式来修改时间显示格式:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM dual;
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
格式代码 | 说明 | 示例 |
---|---|---|
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 |
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM') FROM dual;
SELECT TO_CHAR(SYSDATE, 'YYYY"年"Q"季度"') FROM dual;
SELECT TO_CHAR(SYSDATE, '"今天是"YYYY"年"MM"月"DD"日"') FROM dual;
ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' SCOPE=SPFILE;
修改后需要重启数据库生效。
可以在Oracle用户的.bash_profile(或类似文件)中添加:
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
问题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'