TRUNC
日付またはタイムスタンプを指定した精度に切り捨てます。この関数は広く採用されている日付切り捨て構文に従っているため、他のデータベースシステムから移行するユーザーにとって使いやすくなっています。
構文
TRUNC(<date_or_timestamp>, <datetime_interval_type>)
週の開始日の設定
日時間隔の種類として WEEK を使用する場合、結果は週の最初の日を定義する week_start 設定に依存します。
week_start = 1(デフォルト): 月曜日が週の最初の日と見なされますweek_start = 0: 日曜日が週の最初の日と見なされます
特定のクエリに対してこの設定を変更するには、SETTINGS 句を使用できます。
-- Set Sunday as the first day of the week
SETTINGS (week_start = 0) SELECT TRUNC(to_date('2024-04-05'), 'WEEK');
-- Set Monday as the first day of the week (default)
SETTINGS (week_start = 1) SELECT TRUNC(to_date('2024-04-05'), 'WEEK');
戻り値の型
<date_or_timestamp> と同じです。
例
-- Truncate to different precisions
SELECT
TRUNC(to_date('2022-07-07'), 'MONTH'),
TRUNC(to_date('2022-07-07'), 'WEEK'),
TRUNC(to_date('2022-07-07'), 'YEAR');
┌────────────────────────────────────────────────────────────────────────────────────┐
│ TRUNC(to_date('2022-07-07'), 'MONTH') │ TRUNC(to_date('2022-07-07'), 'WEEK') │ TRUNC(to_date('2022-07-07'), 'YEAR') │
├──────────────────────────────────────┼─────────────────────────────────────┼─────────────────────────────────────┤
│ 2022-07-01 │ 2022-07-04 │ 2022-01-01 │
└────────────────────────────────────────────────────────────────────────────────────┘
次の例は、week_start 設定が WEEK 精度の TRUNC の結果にどのように影響するかを示しています。
-- Default: week_start = 1 (Monday as first day of week)
SELECT TRUNC(to_date('2024-04-03'), 'WEEK'); -- Wednesday
┌─────────────────────────────────────┐
│ TRUNC(to_date('2024-04-03'), 'WEEK') │
├─────────────────────────────────────┤
│ 2024-04-01 │ -- Monday
└─────────────────────────────────────┘
-- Setting week_start = 0 (Sunday as first day of week)
SETTINGS (week_start = 0) SELECT TRUNC(to_date('2024-04-03'), 'WEEK'); -- Wednesday
┌─────────────────────────────────────┐
│ TRUNC(to_date('2024-04-03'), 'WEEK') │
├─────────────────────────────────────┤
│ 2024-03-31 │ -- Sunday
└─────────────────────────────────────┘
タイムスタンプ値で TRUNC を使用する例:
SELECT TRUNC(to_timestamp('2022-07-07 15:30:45.123456'), 'DAY');
┌───────────────────────────────────────────────────────┐
│ TRUNC(to_timestamp('2022-07-07 15:30:45.123456'), 'DAY') │
├───────────────────────────────────────────────────────┤
│ 2022-07-07 00:00:00.000000 │
└───────────────────────────────────────────────────────┘