Snowflake
從時間戳獲取時間段
你好,我的小雪花,我怎樣才能隔離時間戳的正確時間部分?
SELECT CURRENT_TIMESTAMP() AS a, CURRENT_TIMESTAMP() :: timestamp_ntz AS b, CONVERT_TIMEZONE('UTC', CURRENT_TIMESTAMP) AS c, TO_TIME(CURRENT_TIMESTAMP) AS d, TIME_FROM_PARTS(DATE_PART(hour, CURRENT_TIMESTAMP()), DATE_PART(minute, CURRENT_TIMESTAMP()), DATE_PART(second, CURRENT_TIMESTAMP())) AS e
生產
A B C D E ------------------- ------------------- ------------------- -------- -------- 2017-06-11 20:33:00 2017-06-11 18:33:00 2017-06-11 20:33:00 12:33:00 12:33:00
我只是想
20:33:00
在我的情況下執行
SHOW PARAMETERS LIKE 'TIMEZONE';
返回:key value default TIMEZONE America/Los_Angeles America/Los_Angeles
SELECT CURRENT_TIMESTAMP()
結果2019-11-04 07:48:47.289 -0800
。然後我可以像這樣更改會話參數
ALTER SESSION SET TIMEZONE = 'Europe/Amsterdam';
現在
SHOW PARAMETERS LIKE 'TIMEZONE';
給出:key value default TIMEZONE Europe/Amsterdam America/Los_Angeles
並
SELECT CURRENT_TIMESTAMP()
導致2019-11-04 16:49:45.987 +0100
這有望顯示背後的邏輯
CURRENT_TIMESTAMP
。回答實際問題:要獲得時間部分,只需使用
TIMESTAMP::TIME
SELECT CURRENT_TIMESTAMP() :: TIME AS Amsterdam_Time, CONVERT_TIMEZONE('America/Los_Angeles', CURRENT_TIMESTAMP)::TIME AS LA_Time, CONVERT_TIMEZONE('UTC', CURRENT_TIMESTAMP)::TIME AS UTC_Time;
結果(預設為阿姆斯特丹):
AMSTERDAM_TIME LA_TIME UTC_TIME 16:55:37 07:55:37 15:55:37
嘗試
alter session set time_output_format = 'HH24:MI:SS.FF';
如果您還沒有開始使用雪花編寫應用程序,那麼它讀起來就像是一團煙霧。您可能想先嘗試 PostgreSQL,看看它是否滿足您的需求。
如果這不起作用,您可能想嘗試..
to_timestamp
SELECT to_timestamp(CURRENT_TIMESTAMP(), 'HH24:MI:SS.FF') AS a;