DATE_TRUNC スカラー関数
DATE_TRUNC 関数は、日付、時刻、またはタイム・スタンプの値を、指定された時間単位に切り捨てます。
スキーマは SYSIBM です。
- フォーマット・ストリング
255 バイトを超えない文字ストリングを戻し、すべての先行ブランクおよび末尾ブランクを除去した後で、 表 1にリストされている文字ストリングの 1 つを戻す式。 結果のサブストリングは、指定された日時式のタイプに対して有効なフォーマット・エレメントでなければなりません (SQLSTATE 22007)。 例えば、DATE 値を最初の時間、分、または秒に切り捨てたり、TIME 値を年の最初の日に切り捨てたりすることはできません。
日時式 (datetime-expression)- DATE 値、TIME 値、または TIMESTAMP 値、あるいは日付、時刻、タイム・スタンプによる期間を表す DECIMAL 値を戻す式。 これらのデータ・タイプのストリング表現は、 DATE、TIME、TIMESTAMP、または DECIMAL 値に明示的にキャストする必要があります。 期間について詳しくは、 日時操作と期間を参照してください。
フォーマット・ストリング | 日時式を切り捨てる単位 | 以下に例を示します。 | 切り捨ての結果 |
---|---|---|---|
'MILLENNIUM' または 'MILLENNIUMS' | 千年紀の最初の日 | 1999-02-14 |
1000-01-01 |
'CENTURY' または 'CENTURIES' | 世紀の最初の日 | 1999-02-14 |
1900-01-01 |
'DECADE' または 'DECADES' | 10 年単位の最初の日 | 1999-02-14 |
1990-01-01 |
'YEAR' または 'YEARS' | 年の最初の日 | 1999-02-14 |
1999-01-01 |
'QUARTER' | 四半期の最初の日 | 2017-05-14 20:38:40.24 |
2017-04-01 00:00:00 |
'MONTH' または 'MONTHS' | 月の最初の日 | 2017-05-14 20:38:40.24 |
2017-05-01 00:00:00 |
'WEEK' | 週の最初の日 | 2017-05-14 20:38:40.24 |
2017-05-08 00:00:00 |
'DAY' または 'DAYS' | 日の初め | 2017-05-14 20:38:40.24 |
2017-05-14 00:00:00 |
'HOUR' または 'HOURS' | 時間の初め | 2017-05-14 20:38:40.24 |
2017-05-14 20:00:00 |
'MINUTE' または 'MINUTES' | 分の初め | 20:38:40.24576985 |
20:38:00 |
'SECOND' または 'SECONDS' | 秒の初め | 20:38:40.24576985 |
20:38:40 |
'MILLISECOND' または 'MILLISECONDS' | ミリ秒の初め | 20:38:40.24576985 |
20:38:40.245 |
'MICROSECOND' または 'MICROSECOND' | マイクロ秒の初め | 20:38:40.24576985 |
20:38:40.245769 |
結果
指定された日時式に応じて以下のようになります。
- DATE 値または TIMESTAMP 値の場合、結果は TIMESTAMP 値になります。
- TIME 値の場合、結果は TIME 値になります。
- 日付、時刻、またはタイム・スタンプによる期間を表わす DECIMAL 値の場合、結果は同じタイプの DECIMAL 値になります。
例
- 例 1: DATE 値を月の初めに切り捨てます。
values date_trunc('MONTH', DATE('2007-02-18')) Result: 2007-02-01 00:00:00
- 例 2: TIMESTAMP 値を時間の初めに切り捨てます。
values date_trunc('HOUR', TIMESTAMP('2017-02-14 20:38:40.24')); Result: 2017-02-14 20:00:00
- 例 3: TIME 値を分の初めに切り捨てます。
values date_trunc('MINUTE', TIME('20:38:40')); Result: 20:38:00
- 例 4: 日付による期間のデータ・タイプは DECIMAL(8,0) です。 例えば、値 00200203 は 20 年 2 カ月と 3 日という期間を表します。 日付期間を月の初めに切り捨てます。
db2 "values date_trunc('MONTH', cast ('00200203' AS DECIMAL(8,0)))" 1 ---------- 200200. 1 record(s) selected.
- 例 5: 時刻による期間のデータ・タイプは DECIMAL(6,0) です。 例えば、値 102930 は 10 時間 29 分 30 秒という期間を表します。 時刻期間を分の初めに切り捨てます。
db2 "values date_trunc('MINUTE', cast ('102930' AS DECIMAL(6,0)))" 1 -------- 102900. 1 record(s) selected.
- 例 6: タイム・スタンプによる期間のデータ・タイプは DECIMAL(14+s,s) です。s はタイム・スタンプ精度です。 例えば、DECIMAL(20,6) 値 00070005032040.000301 は、7 年 0 カ月と 5 日、3 時間 20 分 40.000301 秒という期間を表します。 タイム・スタンプ期間を時間の初めに切り捨てます。
db2 "values date_trunc('HOUR', cast ('00070005032040.000301' AS DECIMAL(15,1)))" 1 ----------------- 70005030000.0 1 record(s) selected.