前置き
Snowflakeのタイムスタンプ型のデータ、例えば
select current_timestamp();
を実行すると
2024-09-17 18:21:21.851 -0700
という結果が得られます。
実際に実行している時間は9/18 10:21です。
16時間の差があります。
わかりづらいですね。
前日日付のS3日付フォルダからファイルを読み込むタスク+プロシージャーを作るときに「ムズイ」ってなりました。
そこでタイムゾーンを変更できないか調べました。
やってみた
まずはタイムゾーンがどうなっているのか調べます。
show parameters like '%timezone%';

America/Los_Angeles
になってますね。オオタニさんのロサンゼルス。
次、現在時刻を取得します。
select current_timestamp();
2024-09-17 18:21:21.851 -0700
これが最初に書いたわかりづらいと思っているやつ。
タイムゾーン=America/Los_Angelesを日本のものに変えればわかりやすくなるはずです。
変更するにはACCOUTADMINで操作する必要があります。
use role accountadmin;
timezoneを'Asia/Tokyo'に変えます。
alter account set timezone = 'Asia/Tokyo';
再度、タイムゾーンを確認します。(初めに確認したのと同じクエリ)
show parameters like '%timezone%';
valueがAsia/TokyoでdefaultがAmerica/Los_Angelesということで変わったようです。
現在時刻を再取得します。(初めに確認したのと同じクエリ2)
select current_timestamp();
2024-09-18 10:27:48.457 +0900
自分の感覚と同じ時間になりました。
まとめ
+9時間がグリニッジ標準時と日本時間の時差。
-7時間がグリニッジ標準時とロサンゼルス時間の時差。
合わせて16時間のズレがあったのが、タイムゾーンをAsia/Tokyoにしたことで非常に扱いやすくなりました。
疑問
日本国内のデータだけ扱ってるならこのように設定しちゃえばいいものの、
世界中のデータを扱うならまた別途考えなきゃいけない予感がしています。
みなさん、どうされてるんでしょう?




