Oracle 时间格式化

Oracle 时间格式化

Oracle 中主要使用 TO_CHARTO_DATE 函数来进行时间格式化操作。


TO_CHAR:日期转字符串

将日期类型转换为指定格式的字符串:

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
-- 结果示例:2026-06-29 10:13:28

TO_DATE:字符串转日期

将字符串按指定格式解析为日期类型:

SELECT TO_DATE('2026-06-29 10:13:28', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

常用格式元素

格式元素含义示例
YYYY四位年份2026
YY两位年份26
MM月份(01-12)06
DD日(01-31)29
HH2424小时制小时14
HH1212小时制小时02
MI分钟(00-59)30
SS秒(00-59)45
FFfractional seconds(小数秒)123000
DAY星期全名星期一
DY星期缩写周一
D星期数字(1-7)1
Q季度(1-4)2
WW年内第几周26
W月内第几周4
AM/PM上午/下午标识AM

常见用法示例

获取当前时间各种格式
-- 年月日
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;

-- 年月日时分秒
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

-- 年月日(无分隔符)
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL;

-- 带中文
SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') FROM DUAL;
-- 结果:2026年06月29日
日期计算与格式化
-- 当前时间加1天
SELECT TO_CHAR(SYSDATE + 1, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

-- 当前时间加1小时
SELECT TO_CHAR(SYSDATE + 1/24, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

-- 当前时间加1分钟
SELECT TO_CHAR(SYSDATE + 1/24/60, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
获取时间差(秒)
SELECT (TO_DATE('2026-06-29 12:00:00', 'YYYY-MM-DD HH24:MI:SS')
      - TO_DATE('2026-06-29 10:00:00', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 3600
FROM DUAL;
-- 结果:7200(秒)
修改会话默认日期格式
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT SYSDATE FROM DUAL;
-- 直接输出:2026-06-29 10:13:28

注意事项

  • MI 不是 mm:Oracle 中分钟用 MIMM 表示月份,大小写敏感。
  • HH24 vs HH12:24小时制用 HH24,12小时制用 HH12,后者需配合 AM/PM 使用。
  • RR vs YYRR 格式会根据当前年份自动推断世纪(如 25 → 2025,95 → 1995),YY 则固定补 2000。
  • 时区处理:如需处理时区,可使用 FROM_TZAT TIME ZONE 等函数,或查询 SYSTIMESTAMP(带时区的当前时间戳)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值