使用 postgres 14
我有一個類似于 2011-04-26T05:04:11Z 的時間戳。它在 UTC 時間我嘗試使用此函式將其轉換為 postgres 時間戳,但我得到了錯誤的結果 2022-04-26 00:04:11-07。時間部分似乎搞砸了。
這是我的查詢
選擇 to_TIMESTAMP('2011-04-26T05:04:11Z','YYYY-MM-DDTHH:MI:SS')
uj5u.com熱心網友回復:
如果您只想將字串轉換為 Postgres 時間戳,則:
select '2011-04-26T05:04:11Z'::timestamptz;
04/25/2011 22:04:11 PDT
輸出將取決于 DateStyle 設定。
為了讓您的示例正常作業:
select to_TIMESTAMP('2011-04-26T5:04:11Z','YYYY-MM-DD"T"HH24:MI:SS');
to_timestamp
-------------------------
04/26/2011 05:04:11 PDT
請注意,"T"這會導致它被忽略,因為這似乎是導致問題的原因。不確定,但可能與使用空格而不是T. 要忽略的參考字符來自格式化功能:
提示
在 PostgreSQL 12 之前,可以使用非字母或非數字字符跳過輸入字串中的任意文本。例如,to_timestamp('2000y6m1d', 'yyyy-MM-DD') 曾經作業。現在您只能為此目的使用字母字符。例如,to_timestamp('2000y6m1d', 'yyyytMMtDDt') 和 to_timestamp('2000y6m1d', 'yyyy"y"MM"m"DD"d"') 跳過 y、m 和 d。
沒有規定時區縮寫,to_timestamp因此Z將被忽略,時間戳將是本地時間,具有相同的時間值。timestamptz這就是為什么我使用演員表提出我的第一個建議。
處理時區的兩種方法:
一:
select to_TIMESTAMP('2011-04-26T5:04:11Z','YYYY-MM-DD"T"HH24:MI:SS')::timestamp AT time zone 'UTC';
timezone
-------------------------
04/25/2011 22:04:11 PDT
二:
select to_TIMESTAMP('2011-04-26T5:04:11 00','YYYY-MM-DD"T"HH24:MI:SS TZH');
to_timestamp
-------------------------
04/25/2011 22:04:11 PDT
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/465868.html
標籤:sql PostgreSQL
下一篇:c# 一些警告的處理方法
