Oracle 資料庫中的 DATE 型態是處理日期與時間資料的核心,掌握其格式轉換、運算與比較技巧,對資料庫開發與管理至關重要。本文將系統整理 DATE 型態的實際應用場景,包含 TO_DATE、TO_CHAR 格式模型對照表、日期運算邏輯、隱含型態轉換陷阱,以及跨時區處理建議,助您避開常見錯誤,提升 SQL 查詢效能與資料正確性。
使用 TO_CHAR(date, 'fmt') 輸出、TO_CHAR(str, 'fmt') 輸入時,格式字元必須精確對應:
YYYY(四位)、YY(兩位)、RR(跨世紀安全寫法)MM(數字)、MON(縮寫)、MONTH(全名)DD(月內第幾天)、DDD(年內第幾天)HH24(24小時)、HH12(12小時)、MI(分)、SS(秒)、FF(小數秒)錯誤 1:格式字串與資料不符
TO_DATE('2023-13-01', 'YYYY-MM-DD') 會報錯 ORA-01843,因月份 13 超出範圍。務必先以正規表示式或程式端驗證輸入。
錯誤 2:隱含轉換導致索引失效
WHERE date_col = '2023-01-01' 會觸發 TO_DATE 隱含轉換,導致索引無法使用。正確寫法:WHERE date_col = DATE '2023-01-01' 或 TO_DATE('2023-01-01','YYYY-MM-DD')。
TIMESTAMP WITH TIME ZONE,搭配 FROM_TZ、AT TIME ZONE 處理全球化應用。METHOD_OPT => 'FOR COLUMNS SIZE AUTO date_col' 讓最佳化器掌握日期分布。深入掌握 DATE 型態細節,能讓您的 PL/SQL 程式更健壯、查詢計畫更穩定。建議收藏格式模型對照表,開發時隨查隨用。