時刻および日付のインターバルを表すデータ型ファミリーです。INTERVAL 演算子の結果の型でもあります。
構造:
- 符号なし整数値としての時間インターバル
- インターバルの型
サポートされているインターバル型:
NANOSECONDMICROSECONDMILLISECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
各インターバル型には、それぞれ対応する個別のデータ型があります。たとえば、DAY インターバルに対応するデータ型は IntervalDay です:
SELECT toTypeName(INTERVAL 4 DAY)┌─toTypeName(toIntervalDay(4))─┐
│ IntervalDay │
└──────────────────────────────┘使用上の注意
Interval 型の値は、Date 型および DateTime 型の値に対する算術演算で使用できます。たとえば、現在時刻に 4 日を加えることができます。
SELECT now() AS current_date_time, current_date_time + INTERVAL 4 DAY┌───current_date_time─┬─plus(now(), toIntervalDay(4))─┐
│ 2019-10-23 10:58:45 │ 2019-10-27 10:58:45 │
└─────────────────────┴───────────────────────────────┘また、複数のインターバルを同時に使用することも可能です。
SELECT now() AS current_date_time, current_date_time + (INTERVAL 4 DAY + INTERVAL 3 HOUR)┌───current_date_time─┬─plus(current_date_time, plus(toIntervalDay(4), toIntervalHour(3)))─┐
│ 2024-08-08 18:31:39 │ 2024-08-12 21:31:39 │
└─────────────────────┴────────────────────────────────────────────────────────────────────┘また、異なるインターバルの値を比較するには:
SELECT toIntervalMicrosecond(179999999) < toIntervalMinute(3);┌─less(toIntervalMicrosecond(179999999), toIntervalMinute(3))─┐
│ 1 │
└─────────────────────────────────────────────────────────────┘SELECT toIntervalMicrosecond(3600000000) = toIntervalHour(1);┌─equals(toIntervalMicrosecond(3600000000), toIntervalHour(1))─┐
│ 1 │
└──────────────────────────────────────────────────────────────┘混合型インターバル
複数の時間や複数の分などを含む混合型インターバルは、INTERVAL 'value' <from_kind> TO <to_kind> 構文を使用して作成できます。
結果は、2 つ以上のインターバルから成るタプルです。
サポートされている組み合わせ:
| 構文 | 文字列形式 | 例 |
|---|---|---|
YEAR TO MONTH |
Y-M |
INTERVAL '2-6' YEAR TO MONTH |
DAY TO HOUR |
D H |
INTERVAL '5 12' DAY TO HOUR |
DAY TO MINUTE |
D H:M |
INTERVAL '5 12:30' DAY TO MINUTE |
DAY TO SECOND |
D H:M:S |
INTERVAL '5 12:30:45' DAY TO SECOND |
HOUR TO MINUTE |
H:M |
INTERVAL '1:30' HOUR TO MINUTE |
HOUR TO SECOND |
H:M:S |
INTERVAL '1:30:45' HOUR TO SECOND |
MINUTE TO SECOND |
M:S |
INTERVAL '5:30' MINUTE TO SECOND |
先頭以外の各フィールドは SQL 標準に従って検証されます: MONTH は 0~11、HOUR は 0~23、MINUTE は 0~59、SECOND は 0~59 です。
SELECT INTERVAL '1:30' HOUR TO MINUTE;┌─(toIntervalHour(1), toIntervalMinute(30))─┐
│ (1,30) │
└────────────────────────────────────────────┘先頭に付く任意の + または - 記号は、すべての部分に適用されます。
SELECT INTERVAL '+1:30' HOUR TO MINUTE;
-- これは以下と同等です:
-- SELECT INTERVAL '1:30' HOUR TO MINUTE;┌─(toIntervalHour(1), toIntervalMinute(30))─┐
│ (1,30) │
└────────────────────────────────────────────┘関連項目
- INTERVAL 演算子
- toInterval 型変換関数