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?

Snowflakeの日付関数

Posted at

Snowflakeの日付関数についてよく使うものを備忘録としてまとめました。

現在の日時
select current_date() as cur_d,
       cast(current_timestamp as datetime) as cur_dt,
       current_timestamp() as cur_ts,
       to_timestamp_ntz(current_timestamp()) as cur_ntz
;

+-------------+----------------------------+--------------------------------+--------------------------+
| cur_d       | cur_dt                     | cur_ts                         | cur_ntz                  |
+-------------+----------------------------+--------------------------------+--------------------------+
| 2024-09-20  | 2024-09-20 12:34:56.123    | 2024-09-20 12:34:56.123 +0900  | 2024-09-20 12:34:56.123  |
+-------------+----------------------------+--------------------------------+--------------------------+
現在の日時を YYYY-MM-DD HH:MM:SS形式の文字列で表示
select to_varchar(current_date(), 'yyyy-mm-dd hh24:mi:ss'),
       to_varchar(cast(current_timestamp as datetime), 'yyyy-mm-dd hh24:mi:ss'),
       to_varchar(current_timestamp(), 'yyyy-mm-dd hh24:mi:ss')

+---------------------+---------------------+---------------------+
| fmt_d               | fmt_dt              | fmt_ts              |
+---------------------+---------------------+---------------------+
| 2024-09-20 00:00:00 | 2024-09-20 12:34:56 | 2024-09-20 12:34:56 |
+---------------------+---------------------+---------------------+
タイムゾーンを日本にする
-- タイムゾーンの設定
alter session set timezone = 'Asia/Tokyo';

-- タイムゾーンの確認
show parameters like 'TIMEZONE';

+----------+--------------+---------------------+-----------------+
| key      | value        | default             | ・・・          |
+----------+--------------+---------------------+-----------------+
| TIMEZONE | Asia/Tokyo   | America/Los_Angeles | ・・・          |
+----------+--------------+---------------------+-----------------+
タイムスタンプを別のタイムゾーンに変換
SELECT current_timestamp() as current_ts, 
       convert_timezone('UTC', current_timestamp()) as to_utc,
       convert_timezone('America/Chicago', current_timestamp()) as to_LA,
;

+-------------------------------+-------------------------------+-------------------------------+
| current_ts                    | to_utc                        | to_LA                         |
+-------------------------------+-------------------------------+-------------------------------+
| 2024-09-21 19:00:00.000 +0900 | 2024-09-21 10:00:00.000 +0000 | 2024-09-21 05:00:00.000 -0500 |
+-------------------------------+-------------------------------+-------------------------------+
現在の日時を月や日(時分秒は全て0)で丸める
select date_trunc('MONTH', current_date()) as dt_to_month,
       date_trunc('DAY', current_timestamp()) as ts_to_day,
       date_trunc('DAY', to_timestamp_ntz(current_timestamp())) as ntz_to_day
;

+---------------+-------------------------------+--------------------------+
| dt_to_month   | ts_to_day                     | ntz_to_day               |
+---------------+-------------------------------+--------------------------+
| 2024-09-01    | 2024-09-21 00:00:00.000 +0900 | 2024-09-21 00:00:00.000  |
+---------------+-------------------------------+--------------------------+
現在の日時から を抜き出す
select date_part(year, current_date) as year,
       date_part(month, current_date) as mont,
       date_part(day, current_date) as day
;

+------+-------+-----+
| year | month | day |
+------+-------+-----+
| 2024 |  09   | 20  |
+------+-------+-----+

※timestamp も同様
現在の日時に日を加算
select dateadd(year, 2, current_date) as year_add,
       dateadd(month, 2, current_date) as month_add,
       dateadd(day, 2, current_date) as day_add
;

+-------------+-------------+--------------+
| year_add    | month_add   | day_add      |
+-------------+----------------------------+
| 2026-09-20  | 2024-11-20  | 2024-09-22   |
+-------------+----------------------------+
文字列から日付型(date型、timestamp型)へ変換
select to_date('20240920', 'YYYYMMDD') as prd_d,
       to_timestamp('2024/09/20 12:34:56', 'yyyy/mm/dd hh24:mi:ss') as prd_ts,
       to_timestamp_ntz('2024-09-20 12:34:56', 'yyyy-mm-dd hh24:mi:ss') as prs_ts_ntz
;

+-------------+--------------------------+--------------------------+
| prd_d       | parse_ts                 | prs_ts_ntz               |
+-------------+--------------------------+--------------------------+
| 2024-09-20  | 2024-09-20 12:34:56.000  | 2024-09-20 12:34:56.000  |
+-------------+--------------------------+--------------------------+
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?