2016-02-26 409 views
1

我發現在PostgreSQL,我想在我的查詢中刪除+9 UTC值。如何刪除時區查詢TO_TIMESTAMP PostgreSQL的

例如:在TO_TIMESTAMP列,我想刪除+09,只保留2016-02-26 00:23:44值。

這是我的查詢:

select t,to_timestamp(v) from c1.hour where f = 22 and date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' order by t ;

這裏我的結果: enter image description here

這是我的結果時,我沒有使用TO_TIMESTAMP: enter image description here

我能得到對此有一些幫助嗎?

+1

開始通過提供您的表定義 - 數據類型是你的問題是必不可少的。並且不要將代碼作爲圖像發佈。我們非常喜歡* text *。 –

回答

3

使用to_char()功能格式化timestamp到任何期望的字符串表示。例如:

SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS') 

將返回2016-02-26 09:37:49(無時區)

您的查詢必須是這樣的:

SELECT t, to_char(to_timestamp(v), 'YYYY-MM-DD HH24:MI:SS') 
FROM c1.hour 
WHERE 
    f = 22 
    AND date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' 
ORDER BY t ; 
+0

感謝您的回答,它成功運作。 –

2

指定UTC:

select to_timestamp(0)::timestamptz at time zone 'UTC' 

我在時區+ 08並得到以下結果:

1970-01-01 00:00:00

隨着時間的地區規格,我得到:

1970-01-01 08:00:00 + 08

一個優點是,你不必指定日期,時間格式,這可能會導致用戶意外的結果。系統指定的格式將被保留。

+0

我相信,OP想'1970-01-01 08:00:00'代替。 – mlt

+0

是的,沒錯。 '在時區「UTC」'會做到這一點。 – IamIC

+0

'在時區「UTC」'也減少8小時,這似乎不是OP想要的,但只是爲了移除* + 08 *在你的情況下,同時保持其他部分完好無損,就像在你的區域一樣。 – mlt