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

Oracle 日期時間函數完全指南:SYSDATE、TO_CHAR、TO_DATE、TO_NUMBER 實戰

     編輯:Oracle 資料庫基礎

精通 Oracle 日期格式化與型別轉換核心函數

日期時間處理是 SQL 開發高頻需求。本文系統整理 SYSDATE 取得系統時間、TO_CHAR 格式化輸出、TO_DATE 字串轉日期、TO_NUMBER 字串轉數字的完整語法、格式元素對照表、常見陷阱與實戰範例。

核心函數速查

函數用途語法範例
SYSDATE取得資料庫系統日期時間SYSDATESELECT SYSDATE FROM DUAL;
TO_CHAR日期/數字 → 字串TO_CHAR(date/number, 'format')TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE字串 → 日期TO_DATE(char, 'format')TO_DATE('2024-01-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS')
TO_NUMBER字串 → 數字TO_NUMBER(char, 'format')TO_NUMBER('1,234.56', '9G999D99')

日期格式元素完整對照

類別元素說明範例輸出
年YYYY4 位西元年2024
YYY後 3 位024
YY後 2 位24
Y最後 1 位4
月MM2 位數字月01
MON縮寫月名JAN
MONTH全名JANUARY
日DD月內第幾天15
DDD年內第幾天015
DY星期縮寫MON
DAY星期全名MONDAY
時HH2424 小時制14
HH12 / HH12 小時制02
分MI分鐘 (非 MM!)30
秒SS秒00
季Q季度 1-41
週WW / W年內週數 / 月內週數03 / 2

實戰範例集

常見日期格式化

-- 完整時間 (24小時制)
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;  -- 2024-01-15 14:30:00

-- 短日期
SELECT TO_CHAR(SYSDATE, 'YY-MM-DD') FROM DUAL;  -- 24-01-15

-- 帶中文/自定義文字
SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') FROM DUAL;  -- 2024年01月15日

字串轉日期 (注意 HH24 vs HH12)

-- 正確:24小時制配合 HH24
SELECT TO_DATE('2024-01-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

-- 錯誤:14 超過 12小時制範圍
SELECT TO_DATE('2024-01-15 14:30:00', 'YYYY-MM-DD HH12:MI:SS') FROM DUAL; -- ORA-01821

數字格式化

-- 貨幣格式
SELECT TO_CHAR(1000000, '$99,999,999.99') FROM DUAL;  -- $1,000,000.00
SELECT TO_CHAR(1000000, 'L99,999,999.99') FROM DUAL;  -- 本地貨幣符號 (如 NT$)

-- 截斷小數
SELECT TRUNC(TO_NUMBER('1000000.123'), 2) FROM DUAL;  -- 1000000.12

日期運算 (INTERVAL 語法 9i+)

-- 減去 7 分鐘/小時/天/月/年
SELECT SYSDATE - INTERVAL '7' MINUTE FROM DUAL;
SELECT SYSDATE - INTERVAL '7' HOUR FROM DUAL;
SELECT SYSDATE - INTERVAL '7' DAY FROM DUAL;
SELECT SYSDATE - INTERVAL '7' MONTH FROM DUAL;
SELECT SYSDATE - INTERVAL '7' YEAR FROM DUAL;

-- 複合運算
SELECT SYSDATE - 8 * INTERVAL '7' HOUR FROM DUAL;

關鍵避坑指南

  • MI 不是 MM:分鐘用 MI,月份用 MM,寫錯會導致格式錯位
  • HH24 vs HH12:24小時制必須用 HH24,HH12 只接受 1-12
  • NLS 設定影響:TO_DATE 無格式遮罩時依賴 NLS_DATE_FORMAT,跨環境請永遠指定格式
  • DUAL 偽表:無實體表查詢時使用,任何使用者皆可存取
  • 時區敏感:SYSDATE 回傳資料庫伺服器時區,跨時區應用建議用 SYSTIMESTAMP + TIMEZONE 處理

熟練日期格式元素與轉換函數,能消除 90% 的日期處理 Bug。

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