INTERVAL

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

秒または月のスケールで時間の間隔を表します。

重要

Delta Lake では、INTERVAL の種類はサポートされていません。

構文

INTERVAL { yearMonthIntervalQualifier | dayTimeIntervalQualifier }

yearMonthIntervalQualifier
 { YEAR [TO MONTH] |
   MONTH }

dayTimeIntervalQualifier
 { DAY [TO { HOUR | MINUTE | SECOND } ] |
   HOUR [TO { MINUTE | SECOND } ] |
   MINUTE [TO SECOND] |
   SECOND }

メモ

年または月を扱う間隔は、年月の間隔と呼ばれます。

日、時間、分、または秒を扱う間隔は、日時の間隔と呼ばれます。

年月と日時の間隔を組み合わせたり比較したりすることはできません。

日時の間隔は、厳密には 86400 秒/日および 60 秒/分に基づいています。

秒は常にマイクロ秒を含んでいると見なされます。

制限

年月の間隔の最大範囲は +/- 178,956,970 年と 11 か月です。

日時の間隔の最大範囲は +/- 106,751,991 日、23 時間、59 分、59.999999 秒です。

リテラル

year-month interval
  INTERVAL [+|-] yearMonthIntervalString yearMonthIntervalQualifier

day-time interval
  INTERVAL [+|-] dayTimeIntervalString dayTimeIntervalQualifier

yearMonthIntervalString
  { '[+|-] y[...]' |
    '[+|-] y[...]-[m]m' }

dayTimeIntervalString
  { '[+|-] d[...]' |
    '[+|-] d[...] [h]h' |
    '[+|-] d[...] [h]h:[m]m' |
    '[+|-] d[...] [h]h:[m]m:[s]s' |
    '[+|-] d[...] [h]h:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] h[...]' |
    '[+|-] h[...]:[m]m' |
    '[+|-] h[...]:[m]m:[s]s' |
    '[+|-] h[...]:[m]m:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] m[...]' |
    '[+|-] m[...]:[s]s' |
    '[+|-] m[...]:[s]s.ms[ms][ms][us][us][us]' |
    '[+|-] s[...]' |
    '[+|-] s[...].ms[ms][ms][us][us][us]' }
  • y: 経過した年数。
  • m: 経過した月数。
  • d: 経過した日数。
  • h: 経過した時間数。
  • m: 経過した分数。
  • s: 経過した秒数。
  • ms: 経過したミリ秒数。
  • us: 経過したマイクロ秒数。

単位は intervalQualifier の先行する単位を構成する場合を除き、定義された範囲内に収まる必要があります。

  • 月数: 0 から 11
  • 時間数: 0 から 23
  • 分数: 0 から 59
  • 秒数: 0.000000 から 59.999999

intervalString の内側または外側のいずれかに符号を付けることができます。 - 符号が 1 つの場合、間隔は負の値になります。 - 符号が 2 つあるか存在しない場合、間隔は正の値になります。 intervalString 内のコンポーネントが intervalQualifier のコンポーネントと一致しない場合、エラーが発生します。 intervalString 値が intervalQualifier によって指定された範囲内に収まっていない場合、エラーが発生します。

> SELECT INTERVAL '100-00' YEAR TO MONTH;
  100-0

> SELECT INTERVAL '-3600' MONTH;
  -300-0

> SELECT INTERVAL -'200:13:50.3' HOUR TO SECOND;
  -200:13:50.3

> SELECT typeof(INTERVAL -'200:13:50.3' HOUR TO SECOND);
  interval hour to second

> SELECT CAST('11 23:4:0' AS INTERVAL DAY TO SECOND);
  11 23:04:00