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

Oracle 日期時間轉換函數 TO_DATE/TO_CHAR 完整參考

     編輯:Oracle 資料庫基礎

Oracle 日期處理核心在於 TO_DATE(字串→日期)與 TO_CHAR(日期→字串)雙向轉換。本文整理格式元素、常用範例、NLS 語言設定、區間查詢陷阱、數字轉文字、月份差異計算、NEXT_DAY 用法等實務知識。

核心函數語法

TO_DATE('字串', '格式')  -- 字串轉日期
TO_CHAR(日期, '格式')      -- 日期轉字串

常用格式元素對照表

元素說明範例
YYYY / YY4 位 / 2 位年份2024 / 24
MM / MON / MONTH月份編號 / 縮寫 / 全名03 / MAR / MARCH
DD / DDD月內第幾天 / 年內第幾天15 / 256
DAY / DY / D星期全名 / 縮寫 / 數字(1-7)FRIDAY / FRI / 6
HH24 / HH1224 小時制 / 12 小時制15 / 03
MI / SS / SSSS分 / 秒 / 午夜起秒數30 / 45 / 54000

實戰範例

-- 當前時間格式化
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
-- 2024-03-15 14:30:45

-- 字串轉日期(含時分秒)
SELECT TO_DATE('2024-03-15 14:30:45', 'YYYY-MM-DD HH24:MI:SS') FROM dual;

-- 求某天星期
SELECT TO_CHAR(TO_DATE('2024-03-15','YYYY-MM-DD'), 'DAY') FROM dual;  -- FRIDAY
SELECT TO_CHAR(TO_DATE('2024-03-15','YYYY-MM-DD'), 'DAY', 'NLS_DATE_LANGUAGE=AMERICAN') FROM dual;  -- FRIDAY

-- 設定 Session 語言
ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN';

常見陷阱與技巧

  1. BETWEEN 日期區間:BETWEEN '2024-01-01' AND '2024-01-31' 不含 1/31 當天 00:00 之後的資料。精確查詢請用 TO_CHAR 或 TRUNC 處理。
  2. NULL 日期處理:UNION SELECT 1, TO_DATE(NULL) FROM dual,不可直接用 NULL。
  3. 數字轉文字:SELECT TO_CHAR(TO_DATE(222,'J'),'JSP') FROM dual → TWO HUNDRED TWENTY-TWO。
  4. 兩日期天數差:FLOOR(SYSDATE - TO_DATE('20240101','YYYYMMDD'))。
  5. 月份差異:MONTHS_BETWEEN(date1, date2),結果含小數(如 1.032 表示 1 個月零 1 天)。

NEXT_DAY 找下一個指定星期

NEXT_DAY(date, 'MONDAY')  -- 或 'MON', 或 2 (1=Sunday)
-- 回傳 date 之後第一個星期一的日期
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved