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

Oracle 日期函數速查:EXTRACT、TO_CHAR、TO_DATE、TRUNC、星期/年周計算全覆蓋

     編輯:Oracle 資料庫基礎

日期處理是業務開發高頻操作。本文匯總 7 大類常用日期函數與格式模型,含年月日提取、字符串雙向轉換、時間截斷、星期/年周計算,適合新手速查與老手複核。

1. EXTRACT 提取日期組件(推薦,語義清晰)

SELECT EXTRACT(YEAR FROM SYSDATE)   AS year,
       EXTRACT(MONTH FROM SYSDATE)  AS month,
       EXTRACT(DAY FROM SYSDATE)    AS day
FROM dual;

2. TO_CHAR 日期 → 字符串(格式化輸出)

SELECT TO_CHAR(SYSDATE, 'YYYY') AS year,   -- 4位年
       TO_CHAR(SYSDATE, 'MM')   AS month,  -- 2位月
       TO_CHAR(SYSDATE, 'DD')   AS day     -- 2位日
FROM dual;

3. TO_DATE 字符串 → 日期(解析輸入)

TO_DATE('2010-12-21', 'YYYY-MM-DD');           -- 標準格式
TO_DATE('2010-12-21', 'DAY MM/DD/YYYY');       -- 含星期名,不區分大小寫

4. 星期與年周計算

-- 某天星期幾
SELECT TO_CHAR(TO_DATE('2010-12-21','YYYY-MM-DD'), 'DAY') FROM dual;

-- 系統當前時間
SELECT SYSDATE FROM dual;

-- 去除時分秒(保留日期部分)
SELECT TRUNC(SYSDATE, 'DD') FROM dual;

5. 常用格式模型速查表

模型含義示例輸出
YYYY / RRRR4位年2024
MM / MON / MONTH月份 數字/縮寫/全寫12 / DEC / DECEMBER
DD / DDD月內第幾天 / 年內第幾天21 / 356
DAY / DY / D星期全寫 / 縮寫 / 數字(1-7)TUESDAY / TUE / 3
WW / IW年內第幾周 / ISO周51 / 52
HH24 / MI / SS時(24制) / 分 / 秒14 / 30 / 59
AM / PM上午/下午標記PM

6. 進階技巧

  • ADD_MONTHS(date, n):月份加減,自動處理月末
  • MONTHS_BETWEEN(d1, d2):月差值
  • NEXT_DAY(date, 'FRIDAY'):下一個指定星期幾
  • LAST_DAY(date):當月最後一天
  • ROUND(date, 'MONTH'):按月四捨五入(16日後進下月)

建議:業務代碼中禁止隱式轉換,統一使用 TO_DATE/TO_CHAR 顯式指定格式模型,避免 NLS 環境差異導致 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved