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'