- カテゴリ:
DATE_TRUNC¶
DATE
、 TIME
、または TIMESTAMP
を指定された精度に切り捨てます。
切り捨ては抽出とは異なります。例:
タイムスタンプを四半期まで切り捨てると、入力タイムスタンプの四半期の最初の日の真夜中に対応するタイムスタンプが返されます。
タイムスタンプから四半期の日付部分を抽出すると、タイムスタンプの年の四半期の数値が返されます。
構文¶
DATE_TRUNC( <date_or_time_part>, <date_or_time_expr> )
戻り値¶
返される値は、入力値と同じ型です。
例えば、入力値が TIMESTAMP
の場合、返される値は TIMESTAMP
です。
使用上の注意¶
date_or_time_part
は、 サポートされている日付と時刻の部分 にリストされている値のいずれかでなければなりません。date_or_time_part
がweek
(またはそのバリエーション)の場合、出力は WEEK_START セッションパラメーターによって制御されます。例などの詳細については、 カレンダーの週と平日 をご参照ください。date_or_time_expr
は、日付、時刻、またはタイムスタンプにすることができます。
例¶
(タイムスタンプからの)日付を年、月、日までに切り詰めます。
SELECT TO_DATE('2015-05-08T23:39:20.123-07:00') AS "DATE1", DATE_TRUNC('YEAR', "DATE1") AS "TRUNCATED TO YEAR", DATE_TRUNC('MONTH', "DATE1") AS "TRUNCATED TO MONTH", DATE_TRUNC('DAY', "DATE1") AS "TRUNCATED TO DAY"; +------------+-------------------+--------------------+------------------+ | DATE1 | TRUNCATED TO YEAR | TRUNCATED TO MONTH | TRUNCATED TO DAY | |------------+-------------------+--------------------+------------------| | 2015-05-08 | 2015-01-01 | 2015-05-01 | 2015-05-08 | +------------+-------------------+--------------------+------------------+
TIMESTAMP
を時間、分、秒までに切り詰めます。すべての場合で、戻り値は TIMESTAMP
ですが、切り捨てられた部分(例: 秒の小数部)にはゼロがあることに注意してください。
SELECT TO_TIMESTAMP('2015-05-08T23:39:20.123-07:00') AS "TIMESTAMP1", DATE_TRUNC('HOUR', "TIMESTAMP1") AS "TRUNCATED TO HOUR", DATE_TRUNC('MINUTE', "TIMESTAMP1") AS "TRUNCATED TO MINUTE", DATE_TRUNC('SECOND', "TIMESTAMP1") AS "TRUNCATED TO SECOND"; +-------------------------+-------------------------+-------------------------+-------------------------+ | TIMESTAMP1 | TRUNCATED TO HOUR | TRUNCATED TO MINUTE | TRUNCATED TO SECOND | |-------------------------+-------------------------+-------------------------+-------------------------| | 2015-05-08 23:39:20.123 | 2015-05-08 23:00:00.000 | 2015-05-08 23:39:00.000 | 2015-05-08 23:39:20.000 | +-------------------------+-------------------------+-------------------------+-------------------------+
時間を分までに切り詰めます。
SELECT TO_TIME('23:39:20.123') AS "TIME1", DATE_TRUNC('MINUTE', "TIME1") AS "TRUNCATED TO MINUTE"; +----------+---------------------+ | TIME1 | TRUNCATED TO MINUTE | |----------+---------------------| | 23:39:20 | 23:39:00 | +----------+---------------------+
切り捨てと抽出の比較:
SELECT DATE_TRUNC('QUARTER', '2019-08-01 12:34:56.789'::TIMESTAMP_NTZ) AS "TRUNCATED", EXTRACT( 'QUARTER', '2019-08-01 12:34:56.789'::TIMESTAMP_NTZ) AS "EXTRACTED"; +-------------------------+-----------+ | TRUNCATED | EXTRACTED | |-------------------------+-----------| | 2019-07-01 00:00:00.000 | 3 | +-------------------------+-----------+