0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Snowflakeのタイムスタンプ型のデータ、半分くらい理解した

0
Posted at

前置き

Snowflakeのタイムスタンプ型のデータ、例えば

select current_timestamp();

を実行すると

2024-09-17 18:21:21.851 -0700

という結果が得られます。
実際に実行している時間は9/18 10:21です。

スクリーンショット 2024-09-18 102156.png
(現在のPCの時刻部分を切り取り。)

16時間の差があります。
わかりづらいですね。
前日日付のS3日付フォルダからファイルを読み込むタスク+プロシージャーを作るときに「ムズイ」ってなりました。
そこでタイムゾーンを変更できないか調べました。

やってみた

まずはタイムゾーンがどうなっているのか調べます。

show parameters like '%timezone%';

スクリーンショット 2024-09-18 102106.png
America/Los_Angeles
になってますね。オオタニさんのロサンゼルス。

次、現在時刻を取得します。

select current_timestamp();

スクリーンショット 2024-09-18 102147.png

2024-09-17 18:21:21.851 -0700

これが最初に書いたわかりづらいと思っているやつ。

タイムゾーン=America/Los_Angelesを日本のものに変えればわかりやすくなるはずです。

変更するにはACCOUTADMINで操作する必要があります。

use role accountadmin;

timezoneを'Asia/Tokyo'に変えます。

alter account set timezone = 'Asia/Tokyo';

スクリーンショット 2024-09-18 102308.png
無事成功。

再度、タイムゾーンを確認します。(初めに確認したのと同じクエリ)

show parameters like '%timezone%';

スクリーンショット 2024-09-18 102333.png

valueがAsia/TokyoでdefaultがAmerica/Los_Angelesということで変わったようです。

現在時刻を再取得します。(初めに確認したのと同じクエリ2)

select current_timestamp();

スクリーンショット 2024-09-18 102351.png

2024-09-18 10:27:48.457 +0900

自分の感覚と同じ時間になりました。

まとめ

+9時間がグリニッジ標準時と日本時間の時差。
-7時間がグリニッジ標準時とロサンゼルス時間の時差。
合わせて16時間のズレがあったのが、タイムゾーンをAsia/Tokyoにしたことで非常に扱いやすくなりました。

疑問

日本国内のデータだけ扱ってるならこのように設定しちゃえばいいものの、
世界中のデータを扱うならまた別途考えなきゃいけない予感がしています。

みなさん、どうされてるんでしょう?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?