支援的版本:目前版本 (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 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

8.5. 日期/時間類型 #

PostgreSQL 支援完整的SQL日期和時間類型,如表 8.9所示。這些資料類型可用的運算在第 9.9 節中說明。日期根據格里曆計算,即使在該曆法引入之前的年份也是如此(有關更多資訊,請參閱第 B.6 節)。

表 8.9. 日期/時間類型

名稱 儲存空間大小 描述 最小值 最大值 解析度
timestamp [ (p) ] [ without time zone ] 8 位元組 日期和時間(沒有時區) 西元前 4713 年 西元 294276 年 1 微秒
timestamp [ (p) ] with time zone 8 位元組 日期和時間,包含時區 西元前 4713 年 西元 294276 年 1 微秒
date 4 位元組 日期(沒有一天中的時間) 西元前 4713 年 西元 4713 年 西元 5874897 年
1 天 8 位元組 time [ (p) ] [ without time zone ] 00:00:00 24:00:00 1 微秒
一天中的時間(沒有日期) time [ (p) ] with time zone 12 位元組 00:00:00+1559 24:00:00-1559 1 微秒
一天中的時間(沒有日期),包含時區 interval [ fields ] [ (p) ] 16 位元組 時間間隔 -178000000 年 1 微秒

178000000 年

注意

SQL 標準要求僅編寫 timestamp 等同於 timestamp without time zone,而 PostgreSQL 遵守該行為。timestamptz 被接受作為 timestamp with time zone 的縮寫;這是 PostgreSQL 擴充功能。

timetimestampinterval 接受一個可選的精度值 p,該值指定在秒欄位中保留的小數位數。 預設情況下,精度沒有明確的限制。 p 的允許範圍是 0 到 6。

YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
YEAR TO MONTH
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR TO MINUTE
HOUR TO SECOND
MINUTE TO SECOND

interval 類型還有一個額外的選項,即透過編寫以下短語之一來限制儲存欄位的集合

請注意,如果同時指定 fieldsp,則 fields 必須包含 SECOND,因為精度僅適用於秒。

類型 time with time zone 由 SQL 標準定義,但該定義顯示出導致其有用性受到質疑的屬性。 在大多數情況下,datetimetimestamp without time zonetimestamp with time zone 的組合應提供任何應用程式所需的完整日期/時間功能。

8.5.1. 日期/時間輸入 #SQL日期和時間輸入接受幾乎任何合理的格式,包括 ISO 8601、

-相容、傳統的 POSTGRES 等。 對於某些格式,日期輸入中日、月和年的排序不明確,並且支援指定這些欄位的預期排序。 將DateStyle 參數設定為 MDY 以選擇月-日-年解讀,DMY 以選擇日-月-年解讀,或 YMD 以選擇年-月-日解讀。SQLPostgreSQL 在處理日期/時間輸入方面比

標準要求更靈活。 有關日期/時間輸入的確切解析規則以及可識別的文字欄位(包括月份、星期幾和時區),請參閱附錄 BSQL請記住,任何日期或時間常值輸入都需要用單引號括起來,就像文字字串一樣。 有關更多資訊,請參閱第 4.1.2.7 節

type [ (p) ] 'value'

需要以下語法

其中 p 是一個可選的精度規範,給出秒欄位中小數位數。 可以為 timetimestampinterval 類型指定精度,範圍可以從 0 到 6。 如果在常數規範中未指定精度,則預設為常值的值的精度(但不超過 6 位數字)。

8.5.1.1. 日期 #

表 8.10 顯示了 date 類型的一些可能輸入。

表 8.10. 日期輸入 描述
1999-01-08 範例
ISO 8601;任何模式下的 1 月 8 日(建議格式) 1999 年 1 月 8 日
1/8/1999 MDY 模式中為 1 月 8 日;在 DMY 模式中為 8 月 1 日
1/18/1999 MDY 模式中為 1 月 18 日;在其他模式中會被拒絕
01/02/03 MDY 模式中為 2003 年 1 月 2 日;在 DMY 模式中為 2003 年 2 月 1 日;在 YMD 模式中為 2001 年 2 月 3 日
1999-Jan-08 任何模式中皆為 1 月 8 日
Jan-08-1999 任何模式中皆為 1 月 8 日
08-Jan-1999 任何模式中皆為 1 月 8 日
99-Jan-08 YMD 模式中為 1 月 8 日,否則會產生錯誤
08-Jan-99 1 月 8 日,但在 YMD 模式中會產生錯誤
Jan-08-99 1 月 8 日,但在 YMD 模式中會產生錯誤
19990108 ISO 8601;在任何模式中皆為 1999 年 1 月 8 日
990108 ISO 8601;在任何模式中皆為 1999 年 1 月 8 日
1999.008 年份和一年中的第幾天
J2451187 儒略日
西元前 99 年 1 月 8 日 西元前 99 年

8.5.1.2. 時間 #

時間類型有 time [ (p) ] without time zonetime [ (p) ] with time zonetime 單獨使用等同於 time without time zone

這些類型的有效輸入包含一日的時間,後面可選擇性地加上時區。(請參閱表 8.11表 8.12。)如果在 time without time zone 的輸入中指定了時區,則會被靜默忽略。您也可以指定日期,但它將被忽略,除非您使用涉及日光節約規則的時區名稱,例如 America/New_York。在這種情況下,需要指定日期才能確定是適用標準時間還是日光節約時間。適當的時區偏移量會記錄在 time with time zone 值中,並以儲存的方式輸出;它不會調整為作用中的時區。

表 8.11. 時間輸入

表 8.10. 日期輸入 描述
04:05:06.789 ISO 8601
04:05:06 ISO 8601
04:05 ISO 8601
040506 ISO 8601
04:05 AM 與 04:05 相同;AM 不影響值
04:05 PM 與 16:05 相同;輸入的小時數必須 <= 12
04:05:06.789-8 ISO 8601,時區為 UTC 偏移量
04:05:06-08:00 ISO 8601,時區為 UTC 偏移量
04:05-08:00 ISO 8601,時區為 UTC 偏移量
040506-08 ISO 8601,時區為 UTC 偏移量
040506+0730 ISO 8601,時區為小數小時的 UTC 偏移量
040506+07:30:00 UTC 偏移量指定到秒(ISO 8601 不允許)
04:05:06 PST 時區由縮寫指定
2003-04-12 04:05:06 America/New_York 時區由完整名稱指定

表 8.12. 時區輸入

表 8.10. 日期輸入 描述
PST 縮寫(代表太平洋標準時間)
America/New_York 完整的時區名稱
PST8PDT POSIX 樣式的時區規格
-8:00:00 PST 的 UTC 偏移量
-8:00 PST 的 UTC 偏移量(ISO 8601 擴展格式)
-800 PST 的 UTC 偏移量(ISO 8601 基本格式)
-8 PST 的 UTC 偏移量(ISO 8601 基本格式)
zulu UTC 的軍事縮寫
z zulu 的簡短形式(也出現在 ISO 8601 中)

有關如何指定時區的更多資訊,請參閱第 8.5.3 節

8.5.1.3. 時間戳記 #

時間戳記類型的有效輸入包含日期和時間的串聯,後面可選擇性地加上時區,再後面可選擇性地加上 ADBC。(或者,AD/BC 可以出現在時區之前,但這不是首選的順序。)因此

1999-01-08 04:05:06

1999-01-08 04:05:06 -8:00

是有效的值,它們遵循ISO8601 標準。此外,還支援常見的格式

January 8 04:05:06 1999 PST

SQL標準通過時間後面的 +- 符號和時區偏移量來區分 timestamp without time zonetimestamp with time zone 文字。因此,根據標準,

TIMESTAMP '2004-10-19 10:23:54'

timestamp without time zone,而

TIMESTAMP '2004-10-19 10:23:54+02'

timestamp with time zonePostgreSQL 永遠不會在確定文字字串的類型之前檢查其內容,因此會將以上兩者都視為 timestamp without time zone。為確保文字被視為 timestamp with time zone,請賦予它正確的明確類型

TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'

在已被確定為 timestamp without time zone 的文字中,PostgreSQL 將靜默忽略任何時區指示。也就是說,結果值是從輸入值中的日期/時間欄位派生的,並且不會針對時區進行調整。

對於 timestamp with time zone,內部儲存的值始終以 UTC(協調世界時,傳統上稱為格林威治標準時間,GMT)為單位。指定了明確時區的輸入值會使用該時區的適當偏移量轉換為 UTC。如果在輸入字串中未聲明時區,則假定它位於系統的 TimeZone 參數指示的時區中,並使用 timezone 區域的偏移量轉換為 UTC。

當輸出 timestamp with time zone 值時,它始終會從 UTC 轉換為目前的 timezone 區域,並以該區域的當地時間顯示。若要查看另一個時區的時間,請變更 timezone 或使用 AT TIME ZONE 結構(請參閱第 9.9.4 節)。

timestamp without time zonetimestamp with time zone 之間的轉換通常假設 timestamp without time zone 值應被視為 timezone 當地時間。可以使用 AT TIME ZONE 為轉換指定不同的時區。

8.5.1.4. 特殊值 #

為了方便起見,PostgreSQL 支援多個特殊的日期/時間輸入值,如表 8.13 所示。infinity-infinity 值在系統內部以特殊方式表示,並將以未變更的方式顯示;但其他值只是符號速記,會在讀取時轉換為普通的日期/時間值。(特別是,now 和相關字串會立即轉換為特定的時間值。)所有這些值在 SQL 命令中用作常數時,都需要用單引號括起來。

表 8.13. 特殊日期/時間輸入

輸入字串 有效類型 描述
epoch datetimestamp 1970-01-01 00:00:00+00 (Unix 系統時間歸零)
infinity datetimestampinterval 晚於所有其他時間戳記
-infinity datetimestampinterval 早於所有其他時間戳記
now datetimetimestamp 目前交易的開始時間
today datetimestamp 午夜 (00:00) 今天
tomorrow datetimestamp 午夜 (00:00) 明天
yesterday datetimestamp 午夜 (00:00) 昨天
allballs time 00:00:00.00 UTC

以下SQL-compatible 函數也可以用於取得相應資料類型的目前時間值:CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPLOCALTIMELOCALTIMESTAMP。(請參閱第 9.9.5 節。)請注意,這些是 SQL 函數,並且在資料輸入字串中無法識別。

注意

雖然輸入字串 nowtodaytomorrowyesterday 在互動式 SQL 命令中使用沒有問題,但當命令被儲存以便稍後執行時,例如在預處理語句、檢視表和函數定義中,它們可能會產生令人意外的行為。字串可以被轉換為一個特定的時間值,即使它已經過時很久,仍然會繼續被使用。在這種情況下,請改用 SQL 函數。例如,CURRENT_DATE + 1'tomorrow'::date 更安全。

8.5.2. 日期/時間輸出 #

日期/時間型別的輸出格式可以設定為以下四種樣式之一:ISO 8601、SQL(Ingres)、傳統 POSTGRES (Unix date 格式) 或 German。預設值為ISO格式。(SQL標準要求使用 ISO 8601 格式。 SQL 輸出格式的名稱是一個歷史意外。) 表 8.14 顯示了每種輸出樣式的範例。datetime 型別的輸出通常僅包含日期或時間部分,與給定的範例一致。但是,POSTGRES 樣式以ISO格式輸出僅包含日期的值。

表 8.14. 日期/時間輸出樣式

樣式規格 描述 表 8.10. 日期輸入
ISO ISO 8601、SQL 標準 1997-12-17 07:37:16-08
SQL 傳統樣式 12/17/1997 07:37:16.00 PST
Postgres 原始樣式 Wed Dec 17 07:37:16 1997 PST
German 區域樣式 17.12.1997 07:37:16.00 PST

178000000 年

ISO 8601 指定使用大寫字母 T 來分隔日期和時間。PostgreSQL 接受該格式的輸入,但在輸出時,它使用空格而不是 T,如上所示。這是為了提高可讀性並與 RFC 3339 以及其他一些資料庫系統保持一致。

SQL和 POSTGRES 樣式中,如果已指定 DMY 欄位排序,則日會顯示在月之前,否則月會顯示在日之前。(請參閱 第 8.5.1 節,了解此設定如何影響輸入值的解釋。)表 8.15 顯示範例。

表 8.15. 日期順序慣例

datestyle 設定 輸入排序 輸出範例
SQL, DMY // 17/12/1997 15:37:16.00 CET
SQL, MDY // 12/17/1997 07:37:16.00 PST
Postgres, DMY // Wed 17 Dec 07:37:16 1997 PST

ISO樣式中,時區始終顯示為與 UTC 的帶正負號的數字偏移量,格林威治以東的時區使用正號。如果偏移量是小時的整數,則將顯示為 hh (僅小時),如果是分鐘的整數,則將顯示為 hh:mm,否則將顯示為 hh:mm:ss。(第三種情況在任何現代時區標準中都是不可能的,但當處理早於採用標準化時區的時間戳記時可能會出現。)在其他日期樣式中,如果當前時區中普遍使用,則時區顯示為字母縮寫。否則,它會以 ISO 8601 基本格式 (hhhhmm) 顯示為帶正負號的數字偏移量。

可以使用 SET datestyle 命令、postgresql.conf 組態檔案中的 DateStyle 參數,或伺服器或用戶端上的 PGDATESTYLE 環境變數,由使用者選擇日期/時間樣式。

格式化函數 to_char (請參閱 第 9.8 節) 也可用作更靈活的日期/時間輸出格式化方式。

8.5.3. 時區 #

時區和時區慣例受到政治決策的影響,而不僅僅是地球幾何。世界各地的時區在 1900 年代變得有些標準化,但仍然容易發生任意更改,尤其是在日光節約時間規則方面。PostgreSQL 使用廣泛使用的 IANA (Olson) 時區資料庫來獲取有關歷史時區規則的資訊。對於未來的時間,假設給定時區的最新已知規則將無限期地繼續被遵守。

PostgreSQL 致力於與SQL標準定義相容,以用於典型的用法。但是,SQL標準具有日期和時間型別和功能的奇怪組合。兩個明顯的問題是

  • 雖然 date 型別不能具有相關聯的時區,但 time 型別可以。除非與日期和時間相關聯,否則真實世界中的時區沒有多大意義,因為偏移量會因日光節約時間邊界而一年四季都在變化。

  • 預設時區被指定為與UTC的恆定數字偏移量。因此,在跨日光節約時間

邊界進行日期/時間算術時,無法適應日光節約時間。SQL為了解決這些困難,我們建議在使用時區時使用包含日期和時間的日期/時間型別。我們建議使用 time with time zone 型別(雖然 PostgreSQL 支援它用於舊版應用程式並符合

儲存在內部。在顯示給用戶端之前,它們會被轉換為由 TimeZone 組態參數指定的時區中的本機時間。UTC所有時區感知的日期和時間都以

PostgreSQL 允許您以三種不同的形式指定時區

  • 一個完整的時區名稱,例如 America/New_York。可辨識的時區名稱列於 pg_timezone_names 檢視表中(請參閱第 52.32 節)。PostgreSQL 使用廣泛使用的 IANA 時區資料,因此其他軟體也能辨識相同的時區名稱。

  • 一個時區縮寫,例如 PST。這種指定方式僅定義了與 UTC 的特定偏移量,與完整的時區名稱不同,完整的時區名稱可以暗示一組日光節約時間轉換規則。可辨識的縮寫列於 pg_timezone_abbrevs 檢視表中(請參閱第 52.31 節)。您無法將組態參數 TimeZonelog_timezone 設定為時區縮寫,但您可以在日期/時間輸入值中使用縮寫,並搭配 AT TIME ZONE 運算子使用。

  • 除了時區名稱和縮寫之外,PostgreSQL 還接受 POSIX 樣式的時區指定,如第 B.5 節中所述。通常不建議使用此選項來取代具名的時區,但如果沒有合適的 IANA 時區條目可用,則可能有必要使用此選項。

簡而言之,這就是縮寫和完整名稱之間的區別:縮寫表示與 UTC 的特定偏移量,而許多完整名稱則暗示本地日光節約時間規則,因此具有兩個可能的 UTC 偏移量。例如,2014-06-04 12:00 America/New_York 表示紐約的當地時間中午,對於這個特定日期而言,這是東部日光節約時間 (UTC-4)。所以 2014-06-04 12:00 EDT 指定了相同的時間點。但 2014-06-04 12:00 EST 指定了東部標準時間中午 (UTC-5),無論日光節約時間在該日期是否名義上生效。

更複雜的是,某些司法管轄區在不同的時間使用相同的時區縮寫來表示不同的 UTC 偏移量;例如,在莫斯科,MSK 在某些年份表示 UTC+3,而在其他年份表示 UTC+4。PostgreSQL 根據指定日期它們的含義(或最近的含義)來解釋這些縮寫;但是,與上面的 EST 範例一樣,這不一定與該日期的當地民用時間相同。

在所有情況下,時區名稱和縮寫的辨識都不區分大小寫。(這是從 8.2 之前的 PostgreSQL 版本開始的變更,這些版本在某些情況下區分大小寫,而在其他情況下則不區分大小寫。)

時區名稱和縮寫都沒有硬編碼到伺服器中;它們是從安裝目錄的 .../share/timezone/.../share/timezonesets/ 下儲存的組態檔中取得的(請參閱第 B.4 節)。

TimeZone 組態參數可以在檔案 postgresql.conf 中設定,或以第 19 章中描述的任何其他標準方式設定。還有一些特殊的方法可以設定它

  • SQL命令 SET TIME ZONE 設定工作階段的時區。這是 SET TIMEZONE TO 的替代拼寫,具有更符合 SQL 規格的語法。

  • libpq 用戶端使用 PGTZ 環境變數在連線時將 SET TIME ZONE 命令傳送到伺服器。

8.5.4. Interval 輸入 #

interval 值可以使用以下詳細語法編寫

[@] quantity unit [quantity unit...] [direction]

其中 quantity 是一個數字(可能是帶正負號的);unitmicrosecondmillisecondsecondminutehourdayweekmonthyeardecadecenturymillennium,或這些單位的縮寫或複數形式;direction 可以是 ago 或空白。at 符號 (@) 是可選的雜訊。ago 對所有欄位取反。如果 IntervalStyle 設定為 postgres_verbose,則此語法也用於 interval 輸出。

天、小時、分鐘和秒的數量可以指定,而無需明確的單位標記。例如,'1 12:59:10' 的讀取方式與 '1 day 12 hours 59 min 10 sec' 相同。此外,可以使用破折號指定年和月的組合;例如,'200-10' 的讀取方式與 '200 years 10 months' 相同。(事實上,這些較短的形式是唯一的SQL標準允許的形式,並且當 IntervalStyle 設定為 sql_standard 時用於輸出。)

間隔值也可以寫為 ISO 8601 時間間隔,使用標準第 4.4.3.2 節的帶有標誌符的格式或第 4.4.3.3 節的替代格式。帶有標誌符的格式如下所示

P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]

字串必須以 P 開頭,並且可以包含引入時間單位的 T。可用的單位縮寫在表 8.16中給出。可以省略單位,並且可以按任何順序指定單位,但小於一天的單位必須出現在 T 之後。特別是,M 的含義取決於它是在 T 之前還是之後。

表 8.16. ISO 8601 間隔單位縮寫

縮寫 含義
Y
M 月(在日期部分)
W
D
H 小時
M 分鐘(在時間部分)
S

在替代格式中

P [ years-months-days ] [ T hours:minutes:seconds ]

字串必須以 P 開頭,並且 T 分隔間隔的日期和時間部分。這些值以類似於 ISO 8601 日期的數字給出。

當撰寫帶有 fields 規範的間隔常數,或是將字串賦予給定義了 fields 規範的間隔欄位時,未標記數量的解讀取決於 fields。例如,INTERVAL '1' YEAR 會被讀取為 1 年,而 INTERVAL '1' 則表示 1 秒。此外,位於 fields 規範允許的最小有效位元欄位右側的欄位值會被靜默捨棄。例如,撰寫 INTERVAL '1 day 2:03:04' HOUR TO MINUTE 會導致捨棄秒數欄位,但不會捨棄天數欄位。

根據SQL標準,間隔值的所有欄位必須具有相同的正負號,因此前導負號會應用於所有欄位;例如,間隔字面值 '-1 2:03:04' 中的負號同時應用於天數和時/分/秒部分。PostgreSQL 允許欄位具有不同的正負號,並且傳統上將文字表示法中的每個欄位視為獨立簽署,因此在本例中時/分/秒部分被認為是正數。如果 IntervalStyle 設定為 sql_standard,則前導符號被認為適用於所有欄位(但前提是沒有出現額外的符號)。否則,將使用傳統的 PostgreSQL 解釋。為了避免歧義,建議為每個欄位附加明確的符號,如果任何欄位為負數的話。

在內部,interval 值以三個整數欄位儲存:月、天和微秒。這些欄位保持分開,因為一個月中的天數會有所不同,而如果涉及日光節約時間轉換,則一天可能有 23 或 25 小時。使用其他單位的間隔輸入字串會被正規化為此格式,然後以標準化的方式重建以供輸出,例如

SELECT '2 years 15 months 100 weeks 99 hours 123456789 milliseconds'::interval;
               interval
---------------------------------------
 3 years 3 mons 700 days 133:17:36.789

這裡,星期被理解為7 天,因此被分開保存,而較小和較大的時間單位被組合和正規化。

輸入欄位值可以具有小數部分,例如 '1.5 weeks''01:02:03.45'。但是,由於 interval 在內部僅儲存整數欄位,因此必須將小數值轉換為較小的單位。大於月份的單位的小數部分會四捨五入為整數月數,例如 '1.5 years' 變為 '1 year 6 mons'。星期和天數的小數部分會被計算為整數的天數和微秒數,假設每個月 30 天,每天 24 小時,例如 '1.75 months' 變成 1 mon 22 days 12:00:00。只有秒數會在輸出時顯示為小數。

表 8.17 顯示了一些有效的 interval 輸入範例。

表 8.17. 間隔輸入

表 8.10. 日期輸入 描述
1-2 SQL 標準格式:1 年 2 個月
3 4:05:06 SQL 標準格式:3 天 4 小時 5 分鐘 6 秒
1 年 2 個月 3 天 4 小時 5 分鐘 6 秒 傳統 Postgres 格式:1 年 2 個月 3 天 4 小時 5 分鐘 6 秒
P1Y2M3DT4H5M6S ISO 8601 帶有指示符的格式:與上述含義相同
P0001-02-03T04:05:06 ISO 8601 替代格式:與上述含義相同

8.5.5. 間隔輸出 #

如先前所解釋的,PostgreSQLinterval 值儲存為月、天和微秒。對於輸出,月份欄位透過除以 12 轉換為年和月。天數欄位按原樣顯示。微秒欄位轉換為小時、分鐘、秒和秒的小數。因此,月、分鐘和秒永遠不會顯示為超過範圍 0–11、0–59 和 0–59,而顯示的年、天和小時欄位可能非常大。(如果希望將較大的天數或小時值轉換為較高的欄位,可以使用 justify_daysjustify_hours 函數。)

可以使用命令 SET intervalstyle 將間隔類型的輸出格式設定為四種樣式之一:sql_standardpostgrespostgres_verboseiso_8601。預設值為 postgres 格式。表 8.18 顯示了每個輸出樣式的範例。

如果間隔值符合標準的限制(僅限年月或僅限日時,且正負成分不混合),則 sql_standard 樣式會產生符合 SQL 標準間隔字面值字串規範的輸出。否則,輸出看起來像標準的年月字面值字串,後跟日時字面值字串,並添加明確的符號以消除混合符號間隔的歧義。

postgres 樣式的輸出與 DateStyle 參數設定為 ISO 時,8.4 之前的 PostgreSQL 版本的輸出相符。

postgres_verbose 樣式的輸出與 DateStyle 參數設定為非 ISO 輸出時,8.4 之前的 PostgreSQL 版本的輸出相符。

iso_8601 樣式的輸出與 ISO 8601 標準的 4.4.3.2 節中描述的帶有指示符的格式相符。

表 8.18. 間隔輸出樣式範例

樣式規格 年月間隔 日時間隔 混合間隔
sql_standard 1-2 3 4:05:06 -1-2 +3 -4:05:06
postgres 1 year 2 mons 3 days 04:05:06 -1 year -2 mons +3 days -04:05:06
postgres_verbose @ 1 year 2 mons @ 3 days 4 hours 5 mins 6 secs @ 1 year 2 mons -3 days 4 hours 5 mins 6 secs ago
iso_8601 P1Y2M P3DT4H5M6S P-1Y-2M3D​T-4H-5M-6S

提交更正

如果您發現文件中的任何內容不正確、與您使用特定功能的經驗不符或需要進一步說明,請使用此表格來報告文件問題。