Snowflakeを使っていて、現在時刻を登録したい時がありました。
ただ、そのままCURRENT_TIMESTAMP()
で時間を取得するとSnowflakeデフォルトのタイムゾーンが邪魔して、日本の時間が取得できません。
デフォルトはAmerica/Los_Angeles
で設定されているようですね。
なので次のような書き方で、時間を取得するようにしました。
CONVERT_TIMEZONE('Asia/Tokyo', CURRENT_TIMESTAMP()) AS CURRENT_TIMESTAMP
他にも時間の取得方法があったのでまとめておきます!
SQL
SELECT
CONVERT_TIMEZONE('Asia/Tokyo', CURRENT_TIMESTAMP()) AS CURRENT_TIMESTAMP, -- 現在
YEAR(CURRENT_TIMESTAMP) AS CURRENT_YEAR, -- 今年
CASE
WHEN LENGTH(MONTH(CURRENT_TIMESTAMP)) = 1 THEN CONCAT(0, MONTH(CURRENT_TIMESTAMP))
ELSE CONCAT(MONTH(CURRENT_TIMESTAMP))
END AS CURRENT_DATE,
CASE
WHEN LENGTH(DAY(CURRENT_TIMESTAMP)) = 1 THEN CONCAT(0, DAY(CURRENT_TIMESTAMP))
ELSE CONCAT(DAY(CURRENT_TIMESTAMP))
END AS CURRENT_DAY,
CONCAT(CURRENT_YEAR, '-', CURRENT_DATE),
LAST_DAY(CURRENT_TIMESTAMP) -- 今月の最終日
;