тип 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 }

Примечания.

Интервалы, охватывающие годы или месяцы, называются интервалами год-месяц.

Интервалы, охватывающие дни, часы, минуты или секунды, называются интервалами времени дня.

Такие интервалы нельзя объединять или сравнивать с интервалами год-месяц.

Интервалы времени дня строго основываются на значениях 86 400 секунд в дне и 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. Если имеется один - знак, то интервал является отрицательным. Если число знаков два или без - знаков, то интервал будет положительным. Если компоненты в 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