2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

B.1. 日期/時間輸入解釋 #

日期/時間輸入字串使用以下過程進行解碼。

  1. 將輸入字串分解為標記,並將每個標記分類為字串、時間、時區或數字。

    1. 如果數字標記包含冒號 (:),則這是一個時間字串。包括所有後續的數字和冒號。

    2. 如果數字標記包含連字元 (-)、斜槓 (/) 或兩個或多個點 (.),則這是一個日期字串,其中可能包含文字月份。如果已看到日期標記,則將其解釋為時區名稱(例如,America/New_York)。

    3. 如果標記僅為數字,則它是單個欄位或 ISO 8601 連線日期(例如,1999 年 1 月 13 日的 19990113)或時間(例如,14:15:16 的 141516)。

    4. 如果標記以加號 (+) 或減號 (-) 開頭,則它是一個數字時區或一個特殊欄位。

  2. 如果標記是字母字串,則與可能的字串匹配。

    1. 檢視標記是否匹配任何已知時區縮寫。這些縮寫由 B.4 節中描述的配置設定確定。

    2. 如果未找到,則搜尋內部表以將標記匹配為特殊字串(例如,today)、星期(例如,Thursday)、月份(例如,January)或無關詞(例如,aton)。

    3. 如果仍未找到,則丟擲錯誤。

  3. 當標記是數字或數字欄位時

    1. 如果有八位或六位數字,並且之前沒有讀取其他日期欄位,則解釋為“連線日期”(例如,19990118990118)。解釋為 YYYYMMDDYYMMDD

    2. 如果標記是三位數字且年份已讀取,則解釋為一年中的第幾天。

    3. 如果標記是四位或六位數字且年份已讀取,則解釋為時間(HHMMHHMMSS)。

    4. 如果標記是三位或更多數字且尚未找到任何日期欄位,則將其解釋為年份(這會強制使用 yy-mm-dd 順序來處理剩餘的日期欄位)。

    5. 否則,日期欄位順序假定遵循 DateStyle 設定:mm-dd-yy、dd-mm-yy 或 yy-mm-dd。如果月份或日期欄位超出範圍,則丟擲錯誤。

  4. 如果指定了 BC,則將年份取反並加一進行內部儲存。(格里高利曆沒有公元零年,所以數字上 1 BC 變為 0 年。)

  5. 如果未指定 BC,並且年份欄位是兩位數字,則將年份調整為四位數字。如果欄位小於 70,則加 2000,否則加 1900。

    提示

    公元 1-99 年可以使用帶有前導零的四位數字輸入(例如,0099 是公元 99 年)。

提交更正

如果您在文件中發現任何不正確、不符合您對特定功能的實際使用體驗或需要進一步澄清的內容,請使用此表單報告文件問題。