首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 日期時間處理完整指南:格式化、間隔運算、轉換函數

     編輯:Oracle 資料庫基礎

核心格式元素對照表

元素含義範例輸出
YYYY4 位年2024
MM月 (01-12)01
MON月縮寫JAN
MONTH月全名JANUARY
DD月內第幾天15
DDD年內第幾天045
DY星期縮寫MON
DAY星期全名MONDAY
HH2424 小時制13
HH12 / HH12 小時制01
MI分30
SS秒45
FF小數秒.123456

1. 日期 → 字串 (TO_CHAR)

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
-- 2024-01-15 13:30:45

SELECT TO_CHAR(SYSDATE, 'YYYY-DDD HH:MI:SS') FROM dual;
-- 2024-015 01:30:45

SELECT TO_CHAR(SYSDATE, 'YYYY-MM IW-D HH:MI:SS') FROM dual;
-- 2024-01 03-1 01:30:45 (ISO 週、週內天)

2. 字串 → 日期 (TO_DATE)

SELECT TO_DATE('2024-01-15 13:30:45', 'YYYY-MM-DD HH24:MI:SS') FROM dual;

3. 日期間隔運算 (INTERVAL)

-- 當前時間減 7 分鐘
SELECT SYSDATE, SYSDATE - INTERVAL '7' MINUTE FROM dual;

-- 減 7 小時
SELECT SYSDATE - INTERVAL '7' HOUR FROM dual;

-- 減 7 天
SELECT SYSDATE - INTERVAL '7' DAY FROM dual;

-- 減 7 月
SELECT SYSDATE - INTERVAL '7' MONTH FROM dual;

-- 減 7 年
SELECT SYSDATE - INTERVAL '7' YEAR FROM dual;

-- 間隔乘數
SELECT SYSDATE - 8 * INTERVAL '2' HOUR FROM dual;  -- 減 16 小時

4. 常用日期函數速查

函數用途範例
SYSDATE資料庫伺服器當前日期時間SELECT SYSDATE FROM dual;
SYSTIMESTAMP含時區與小數秒SELECT SYSTIMESTAMP FROM dual;
ADD_MONTHS(d, n)加減月份 (自動處理月底)ADD_MONTHS(SYSDATE, -3)
MONTHS_BETWEEN(d1, d2)兩日期月差MONTHS_BETWEEN(SYSDATE, hire_date)
NEXT_DAY(d, 'MONDAY')下一個指定星期NEXT_DAY(SYSDATE, 'FRIDAY')
LAST_DAY(d)該月最後一天LAST_DAY(SYSDATE)
ROUND(d, 'MONTH')日期四捨五入到月/年ROUND(SYSDATE, 'MONTH')
TRUNC(d, 'MM')日期截斷到月/年TRUNC(SYSDATE, 'YYYY')
EXTRACT(YEAR FROM d)擷取年/月/日/時/分/秒EXTRACT(MONTH FROM SYSDATE)

5. 時區與 TIMESTAMP (11g+)

-- 帶時區時間戳
SELECT SYSTIMESTAMP FROM dual;
-- 2024-01-15 13:30:45.123456 +08:00

-- 時區轉換
SELECT FROM_TZ(CAST(SYSDATE AS TIMESTAMP), 'UTC') AT TIME ZONE 'Asia/Taipei' FROM dual;

避坑提醒

  • 格式字串大小寫敏感:MM (月) vs MI (分),HH24 vs HH12。
  • TO_DATE 不指定時間部分預設 00:00:00,比較含時間欄位需注意。
  • INTERVAL 單數/複數皆可:'1' DAY = '1' DAYS。
  • 跨時區應用統一儲存 TIMESTAMP WITH TIME ZONE,顯示時再轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved