Skip to main content

Interval

Семейство типов данных, представляющих интервалы дат и времени. Оператор INTERVAL возвращает значения этих типов.

Внимание

Нельзя использовать типы данных Interval для хранения данных в таблице.

Структура:

  • Интервал времени в виде положительного целого числа.
  • Тип интервала.

Поддержанные типы интервалов:

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

Каждому типу интервала соответствует отдельный тип данных. Например, тип данных IntervalDay соответствует интервалу DAY:

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(3600000000) = toIntervalHour(1);
┌─less(toIntervalMicrosecond(179999999), toIntervalMinute(3))─┐
│ 1 │
└─────────────────────────────────────────────────────────────┘

Смотрите также