Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы с датами и временем

Большинство функций в этом разделе принимают необязательный аргумент часового пояса, например, Europe/Amsterdam. В этом случае часовой пояс будет указанным, а не локальным (по умолчанию).

Пример

makeDate

Создает дату

  • из аргументов год, месяц и день, или
  • из аргументов год и день года.

Синтаксис

Псевдоним:

  • MAKEDATE(year, month, day);
  • MAKEDATE(year, day_of_year);

Аргументы

Возвращаемое значение

  • Дата, созданная из аргументов. Дата.

Пример

Создать дату из года, месяца и дня:

Результат:

Создать дату из года и дня в году:

Результат:

makeDate32

Создает дату типа Date32 из года, месяца, дня (или по желанию из года и дня).

Синтаксис

Аргументы

примечание

Если month опущен, то day должен принимать значение от 1 до 365, в противном случае он должен иметь значение от 1 до 31.

Возвращаемые значения

  • Дата, созданная из аргументов. Date32.

Примеры

Создать дату из года, месяца и дня:

Запрос:

Результат:

Создать дату из года и дня в году:

Запрос:

Результат:

makeDateTime

Создает DateTime из аргументов года, месяца, дня, часа, минуты и секунды.

Синтаксис

Аргументы

Возвращаемое значение

  • Дата и время, созданные из аргументов. DateTime.

Пример

Результат:

makeDateTime64

Создает значение типа DateTime64 из его компонентов: год, месяц, день, час, минута, секунда. С возможностью указания точности до миллисекунд.

Синтаксис

Аргументы

Возвращаемое значение

  • Дата и время, созданные из переданных аргументов. DateTime64.

Пример

timestamp

Преобразует первый аргумент 'expr' в тип DateTime64(6). Если предоставлен второй аргумент 'expr_time', он добавляет указанное время к преобразованному значению.

Синтаксис

Псевдоним: TIMESTAMP

Аргументы

  • expr - Дата или дата с временем. Строка.
  • expr_time - необязательный параметр. Время для добавления. Строка.

Примеры

Результат:

Результат:

Возвращаемое значение

timeZone

Возвращает часовой пояс текущей сессии, т.е. значение настройки session_timezone. Если функция выполняется в контексте распределенной таблицы, то она генерирует обычную колонку со значениями, относящимися к каждой шард, в противном случае она производит постоянное значение.

Синтаксис

Псевдоним: timezone.

Возвращаемое значение

Пример

Результат:

См. также

serverTimeZone

Возвращает часовой пояс сервера, т.е. значение настройки timezone. Если функция выполняется в контексте распределенной таблицы, то она генерирует обычную колонку со значениями, относящимися к каждой шард. В противном случае, она производит постоянное значение.

Синтаксис

Псевдоним: serverTimezone.

Возвращаемое значение

Пример

Результат:

См. также

toTimeZone

Преобразует дату или дату с временем в указанный часовой пояс. Не изменяет внутреннее значение (количество unix секунд) данных, только атрибут часового пояса значения и строковое представление значения изменяются.

Синтаксис

Псевдоним: toTimezone.

Аргументы

  • value — Время или дата и время. DateTime64.
  • timezone — Часовой пояс для возвращаемого значения. Строка. Этот аргумент постоянен, поскольку toTimezone изменяет часовой пояс колонки (часовой пояс является атрибутом типов DateTime*).

Возвращаемое значение

Пример

Результат:

См. также

  • formatDateTime - поддерживает неконстантный часовой пояс.
  • toString - поддерживает неконстантный часовой пояс.

timeZoneOf

Возвращает имя часового пояса типов DateTime или DateTime64.

Синтаксис

Псевдоним: timezoneOf.

Аргументы

Возвращаемое значение

Пример

Результат:

timeZoneOffset

Возвращает смещение часового пояса в секундах от UTC. Функция учитывает летнее время и исторические изменения часового пояса на указанную дату и время. Используется база данных часовых поясов IANA для вычисления смещения.

Синтаксис

Псевдоним: timezoneOffset.

Аргументы

Возвращаемое значение

  • Смещение от UTC в секундах. Int32.

Пример

Результат:

toYear

Возвращает компонент года (н.э.) даты или даты с временем.

Синтаксис

Псевдоним: YEAR

Аргументы

Возвращаемое значение

  • Год данной даты/времени. UInt16.

Пример

Результат:

toQuarter

Возвращает квартал (1-4) даты или даты с временем.

Синтаксис

Псевдоним: QUARTER

Аргументы

Возвращаемое значение

  • Квартал года (1, 2, 3 или 4) данной даты/времени. UInt8.

Пример

Результат:

toMonth

Возвращает компонент месяца (1-12) даты или даты с временем.

Синтаксис

Псевдоним: MONTH

Аргументы

Возвращаемое значение

  • Месяц года (1 - 12) данной даты/времени. UInt8.

Пример

Результат:

toDayOfYear

Возвращает номер дня в году (1-366) даты или даты с временем.

Синтаксис

Псевдоним: DAYOFYEAR

Аргументы

Возвращаемое значение

  • День года (1 - 366) данной даты/времени. UInt16.

Пример

Результат:

toDayOfMonth

Возвращает номер дня в месяце (1-31) даты или даты с временем.

Синтаксис

Псевдонимы: DAYOFMONTH, DAY

Аргументы

Возвращаемое значение

  • День месяца (1 - 31) данной даты/времени. UInt8.

Пример

Результат:

toDayOfWeek

Возвращает номер дня в неделе даты или даты с временем.

Двухаргументная форма toDayOfWeek() позволяет задать, начинается ли неделя с понедельника или воскресенья, и должен ли возвращаемый результат быть в диапазоне от 0 до 6 или от 1 до 7. Если аргумент mode опущен, то режим по умолчанию - 0. Часовой пояс даты можно указать в качестве третьего аргумента.

РежимПервый день неделиДиапазон
0Понедельник1-7: Понедельник = 1, Вторник = 2, ..., Воскресенье = 7
1Понедельник0-6: Понедельник = 0, Вторник = 1, ..., Воскресенье = 6
2Воскресенье0-6: Воскресенье = 0, Понедельник = 1, ..., Суббота = 6
3Воскресенье1-7: Воскресенье = 1, Понедельник = 2, ..., Суббота = 7

Синтаксис

Псевдоним: DAYOFWEEK.

Аргументы

  • t - Дата, Date32, DateTime или DateTime64
  • mode - определяет, какой день недели является первым. Возможные значения: 0, 1, 2 или 3. См. таблицу выше для различий.
  • timezone - необязательный параметр, он ведет себя как любая другая функция преобразования.

Первый аргумент также можно указать как Строку в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только по причинам совместимости с MySQL, который ожидается определенными сторонними инструментами. Поскольку поддержка строковых аргументов может в будущем быть сделана зависимой от новых настроек совместимости с MySQL, и поскольку разбор строк обычно медленный, рекомендуется не использовать его.

Возвращаемое значение

  • День недели (1-7), в зависимости от выбранного режима, данной даты/времени

Пример

Следующая дата - 21 апреля 2023 года, что был пятница:

Результат:

toHour

Возвращает компонент часа (0-24) даты с временем.

Предполагается, что если часы переводятся вперед, это происходит на один час и в 2 часа ночи, а если часы переводятся назад, это происходит на один час и в 3 часа ночи (что не всегда точно, это зависит от часового пояса).

Синтаксис

Псевдоним: HOUR

Аргументы

Возвращаемое значение

  • Час дня (0 - 23) данной даты/времени. UInt8.

Пример

Результат:

toMinute

Возвращает компонент минуты (0-59) даты с временем.

Синтаксис

Псевдоним: MINUTE

Аргументы

Возвращаемое значение

  • Минута часа (0 - 59) данной даты/времени. UInt8.

Пример

Результат:

toSecond

Возвращает компонент секунды (0-59) даты с временем. Високосные секунды не учитываются.

Синтаксис

Псевдоним: SECOND

Аргументы

Возвращаемое значение

  • Секунда в минуте (0 - 59) данной даты/времени. UInt8.

Пример

Результат:

toMillisecond

Возвращает компонент миллисекунды (0-999) даты с временем.

Синтаксис

Аргументы*

Псевдоним: MILLISECOND

Результат:

Возвращаемое значение

  • Миллисекунда в минуте (0 - 999) данной даты/времени. UInt16.

toUnixTimestamp

Преобразует строку, дату или дату с временем в Unix Timestamp в представлении UInt32.

Если функция вызывается со строкой, она принимает необязательный аргумент часового пояса.

Синтаксис

Возвращаемое значение

  • Возвращает unix timestamp. UInt32.

Пример

Результат:

примечание

Тип возвращаемого значения функций toStartOf*, toLastDayOf*, toMonday, timeSlot, описанных ниже, определяется параметром конфигурации enable_extended_results_for_datetime_functions, который по умолчанию равен 0.

Поведение для

  • enable_extended_results_for_datetime_functions = 0:
    • Функции toStartOfYear, toStartOfISOYear, toStartOfQuarter, toStartOfMonth, toStartOfWeek, toLastDayOfWeek, toLastDayOfMonth, toMonday возвращают Date или DateTime.
    • Функции toStartOfDay, toStartOfHour, toStartOfFifteenMinutes, toStartOfTenMinutes, toStartOfFiveMinutes, toStartOfMinute, timeSlot возвращают DateTime. Хотя эти функции могут принимать значения расширенных типов Date32 и DateTime64 как аргументы, передача им времени вне нормального диапазона (год 1970-2149 для Date / 2106 для DateTime) приведет к неверным результатам.
  • enable_extended_results_for_datetime_functions = 1:
    • Функции toStartOfYear, toStartOfISOYear, toStartOfQuarter, toStartOfMonth, toStartOfWeek, toLastDayOfWeek, toLastDayOfMonth, toMonday возвращают Date или DateTime, если их аргумент - это Date или DateTime, и они возвращают Date32 или DateTime64, если их аргумент - это Date32 или DateTime64.
    • Функции toStartOfDay, toStartOfHour, toStartOfFifteenMinutes, toStartOfTenMinutes, toStartOfFiveMinutes, toStartOfMinute, timeSlot возвращают DateTime, если их аргумент - это Date или DateTime, и они возвращают DateTime64, если их аргумент - это Date32 или DateTime64.

toStartOfYear

Округляет дату или дату с временем до первого дня года. Возвращает дату как объект Date.

Синтаксис

Аргументы

Возвращаемое значение

  • Первый день года ввода даты/времени. Дата.

Пример

Результат:

toStartOfISOYear

Округляет дату или дату с временем до первого дня ISO года, который может отличаться от "обычного" года. (См. https://en.wikipedia.org/wiki/ISO_week_date.)

Синтаксис

Аргументы

Возвращаемое значение

  • Первый день года ввода даты/времени. Дата.

Пример

Результат:

toStartOfQuarter

Округляет дату или дату с временем до первого дня квартала. Первый день квартала - это либо 1 января, 1 апреля, 1 июля, либо 1 октября. Возвращает дату.

Синтаксис

Аргументы

Возвращаемое значение

  • Первый день квартала данной даты/времени. Дата.

Пример

Результат:

toStartOfMonth

Округляет дату или дату с временем до первого дня месяца. Возвращает дату.

Синтаксис

Аргументы

Возвращаемое значение

  • Первый день месяца данной даты/времени. Дата.

Пример

Результат:

примечание

Поведение разбора неправильных дат специфично для реализации. ClickHouse может вернуть дату ноль, вызвать исключение или выполнить "естественный" переполнение.

toLastDayOfMonth

Округляет дату или дату с временем до последнего дня месяца. Возвращает дату.

Синтаксис

Псевдоним: LAST_DAY

Аргументы

Возвращаемое значение

  • Последний день месяца данной даты/времени. Дата.

Пример

Результат:

toMonday

Округляет дату или дату с временем до ближайшего понедельника. Возвращает дату.

Синтаксис

Аргументы

Возвращаемое значение

  • Дата ближайшего понедельника на или до данной даты. Дата.

Пример

Результат:

toStartOfWeek

Округляет дату или дату с временем до ближайшего воскресенья или понедельника. Возвращает дату. Аргумент режима работает точно так же, как аргумент режима в функции toWeek(). Если режим не указан, по умолчанию используется 0.

Синтаксис

Аргументы

  • t - Дата, Date32, DateTime или DateTime64
  • mode - определяет первый день недели, как описано в функции toWeek()
  • timezone - необязательный параметр, ведет себя как любая другая функция преобразования

Возвращаемое значение

  • Дата ближайшего воскресенья или понедельника на или до указанной даты, в зависимости от режима. Дата.

Пример

Результат:

toLastDayOfWeek

Округляет дату или дату с временем до ближайшей субботы или воскресенья. Возвращает дату. Аргумент режима работает точно так же, как аргумент режима в функции toWeek(). Если режим не указан, режим принимается равным 0.

Синтаксис

Аргументы

  • t - Дата, Date32, DateTime или DateTime64
  • mode - определяет последний день недели, как описано в функции toWeek
  • timezone - необязательный параметр, ведет себя как любая другая функция преобразования

Возвращаемое значение

  • Дата ближайшего воскресенья или понедельника на или после указанной даты, в зависимости от режима. Дата.

Пример

Результат:

toStartOfDay

Округляет дату с временем до начала дня.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало дня для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfHour

Округляет дату с временем до начала часа.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало часа для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfMinute

Округляет дату с временем до начала минуты.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало минуты для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfSecond

Убирает компоненты субсекунд.

Синтаксис

Аргументы

  • value — Дата и время. DateTime64.
  • timezoneЧасовой пояс для возвращаемого значения (необязательный). Если не указан, функция использует часовой пояс параметра value. String.

Возвращаемое значение

  • Входное значение без субсекунд. DateTime64.

Примеры

Запрос без часового пояса:

Результат:

Запрос с часовым поясом:

Результат:

См. также

toStartOfMillisecond

Округляет дату с временем до начала миллисекунд.

Синтаксис

Аргументы

  • value — Дата и время. DateTime64.
  • timezoneЧасовой пояс для возвращаемого значения (необязательный). Если не указан, функция использует часовой пояс параметра value. String.

Возвращаемое значение

  • Входное значение с субмиллисекундами. DateTime64.

Примеры

Запрос без часового пояса:

Результат:

Запрос с часовым поясом:

Результат:

См. также

toStartOfMicrosecond

Округляет дату с временем до начала микросекунд.

Синтаксис

Аргументы

  • value — Дата и время. DateTime64.
  • timezoneЧасовой пояс для возвращаемого значения (необязательный). Если не указан, функция использует часовой пояс параметра value. String.

Возвращаемое значение

  • Входное значение с субмикросекундами. DateTime64.

Примеры

Запрос без часового пояса:

Результат:

Запрос с часовым поясом:

Результат:

См. также

toStartOfNanosecond

Округляет дату с временем до начала наносекунд.

Синтаксис

Аргументы

  • value — Дата и время. DateTime64.
  • timezoneЧасовой пояс для возвращаемого значения (необязательный). Если не указан, функция использует часовой пояс параметра value. String.

Возвращаемое значение

  • Входное значение с наносекундами. DateTime64.

Примеры

Запрос без часового пояса:

Результат:

Запрос с часовым поясом:

Результат:

См. также

toStartOfFiveMinutes

Округляет дату с временем до начала пятиминутного интервала.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало пятиминутного интервала для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfTenMinutes

Округляет дату с временем до начала десятиминутного интервала.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало десятиминутного интервала для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfFifteenMinutes

Округляет дату с временем до начала пятнадцатиминутного интервала.

Синтаксис

Аргументы

Возвращаемое значение

  • Начало пятнадцатиминутного интервала для указанной даты/времени. DateTime.

Пример

Результат:

toStartOfInterval

Эта функция обобщает другие функции toStartOf*() с помощью синтаксиса toStartOfInterval(date_or_date_with_time, INTERVAL x unit [, time_zone]). Например,

  • toStartOfInterval(t, INTERVAL 1 YEAR) возвращает то же самое, что и toStartOfYear(t),
  • toStartOfInterval(t, INTERVAL 1 MONTH) возвращает то же самое, что и toStartOfMonth(t),
  • toStartOfInterval(t, INTERVAL 1 DAY) возвращает то же самое, что и toStartOfDay(t),
  • toStartOfInterval(t, INTERVAL 15 MINUTE) возвращает то же самое, что и toStartOfFifteenMinutes(t).

Расчеты выполняются относительно определенных моментов времени:

ИнтервалНачало
ГОДгод 0
КВАРТАЛ1900 Q1
МЕСЯЦЯнварь 1900
НЕДЕЛЯ1970, 1-я неделя (01-05)
ДЕНЬ1970-01-01
ЧАС(*)
МИНУТА1970-01-01 00:00:00
СЕКУНДА1970-01-01 00:00:00
МИЛЛИСЕКУНДА1970-01-01 00:00:00
МИКРОСЕКУНДА1970-01-01 00:00:00
НАНОСЕКУНДА1970-01-01 00:00:00

(*) Интервалы часов являются особыми: расчеты всегда выполняются относительно 00:00:00 (полночь) текущего дня. В результате только значения часов от 1 до 23 имеют смысл.

Если указан интервал WEEK, toStartOfInterval предполагает, что недели начинаются с понедельника. Обратите внимание, что это поведение отличается от функции toStartOfWeek, где недели по умолчанию начинаются с воскресенья.

Синтаксис

Псевдонимы: time_bucket, date_bin.

Вторая перегрузка эмулирует функцию time_bucket() TimescaleDB, соответственно функцию date_bin() PostgreSQL, например.

Результат:

См. также

toTime

Преобразует дату с временем в определенную фиксированную дату, при этом сохраняя время.

Синтаксис

Аргументы

  • date — Дата, которую нужно преобразовать в время. Дата/DateTime/DateTime64.
  • timezone (необязательный) — Часовой пояс для возвращаемого значения. String.

Возвращаемое значение

  • DateTime с датой, равной 1970-01-02, при этом сохраняя время. DateTime.
примечание

Если входной аргумент date содержал компоненты субсекунд, они будут отброшены в возвращаемом значении DateTime с точностью до секунд.

Пример

Запрос:

Результат:

toRelativeYearNum

Преобразует дату или дату с временем в количество лет, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество лет с фиксированной референсной точки в прошлом. UInt16.

Пример

Запрос:

Результат:

toRelativeQuarterNum

Преобразует дату или дату с временем в количество кварталов, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество кварталов от фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeMonthNum

Преобразует дату или дату с временем в количество месяцев, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество месяцев с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeWeekNum

Преобразует дату или дату с временем в количество недель, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество недель с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeDayNum

Преобразует дату или дату с временем в количество дней, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество дней с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeHourNum

Преобразует дату или дату с временем в количество часов, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество часов с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeMinuteNum

Преобразует дату или дату с временем в количество минут, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество минут с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toRelativeSecondNum

Преобразует дату или дату с временем в количество секунд, прошедших с определенной фиксированной точки в прошлом.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество секунд с фиксированной референсной точки в прошлом. UInt32.

Пример

Запрос:

Результат:

toISOYear

Преобразует дату или дату с временем в ISO год в виде числа UInt16.

Синтаксис

Аргументы

Возвращаемое значение

  • Входное значение, преобразованное в номер ISO года. UInt16.

Пример

Запрос:

Результат:

toISOWeek

Преобразует дату или дату с временем в число UInt8, содержащее номер ISO недели.

Синтаксис

Аргументы

  • value — Значение с датой или датой с временем.

Возвращаемое значение

  • value, преобразованное в текущий номер ISO недели. UInt8.

Пример

Запрос:

Ответ:

toWeek

Эта функция возвращает номер недели для даты или временной метки. Двухаргументная форма toWeek() позволяет указать, начинается ли неделя в воскресенье или понедельник и должен ли возвращаемый результат быть в диапазоне от 0 до 53 или от 1 до 53. Если аргумент режима пропущен, режим по умолчанию равен 0.

toISOWeek() — это функция совместимости, которая эквивалентна toWeek(date,3).

Следующая таблица описывает, как работает аргумент режима.

РежимПервый день неделиДиапазонНеделя 1 - это первая неделя ...
0Воскресенье0-53с воскресеньем в этом году
1Понедельник0-53с 4 или более днями в этом году
2Воскресенье1-53с воскресеньем в этом году
3Понедельник1-53с 4 или более днями в этом году
4Воскресенье0-53с 4 или более днями в этом году
5Понедельник0-53с понедельником в этом году
6Воскресенье1-53с 4 или более днями в этом году
7Понедельник1-53с понедельником в этом году
8Воскресенье1-53содержит 1 января
9Понедельник1-53содержит 1 января

Для режимов с пониманием "с 4 или более днями в этом году" недели нумеруются согласно ISO 8601:1988:

  • Если неделя, содержащая 1 января, имеет 4 или более дней в новом году, она является неделей 1.

  • В противном случае это последняя неделя предыдущего года, и следующая неделя становится неделей 1.

Для режимов с пониманием "содержит 1 января" неделя, содержащая 1 января, является неделей 1. Не имеет значения, сколько дней в новом году она содержала, даже если это было всего один день. То есть если последняя неделя декабря содержит 1 января следующего года, она будет неделей 1 следующего года.

Синтаксис

Псевдоним: WEEK

Аргументы

  • t – Дата или ДатаВремя.
  • mode – Необязательный параметр, диапазон значений [0,9], по умолчанию 0.
  • timezone – Необязательный параметр, ведет себя как любая другая функция преобразования.

Первый аргумент также может быть указан в виде String в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только по причинам совместимости с MySQL, ожидаемым определенными сторонними инструментами. Поскольку поддержка строковых аргументов может в будущем зависеть от новых настроек совместимости MySQL и поскольку парсинг строк, как правило, медленный, рекомендуется не использовать это.

Пример

toYearWeek

Возвращает год и неделю для даты. Год в результате может отличаться от года в аргументе даты для первой и последней недели года.

Аргумент режима работает так же, как аргумент режима для toWeek(). Для однозначного синтаксиса используется значение режима 0.

toISOYear() — это функция совместимости, эквивалентная intDiv(toYearWeek(date,3),100).

осторожно

Номер недели, возвращаемый toYearWeek(), может отличаться от того, что возвращает toWeek(). toWeek() всегда возвращает номер недели в контексте данного года, и в случае, если toWeek() возвращает 0, toYearWeek() возвращает значение, соответствующее последней неделе предыдущего года. См. prev_yearWeek в примере ниже.

Синтаксис

Псевдоним: YEARWEEK

Первый аргумент также может быть указан в виде String в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только по причинам совместимости с MySQL, ожидаемым определенными сторонними инструментами. Поскольку поддержка строковых аргументов может в будущем зависеть от новых настроек совместимости MySQL и поскольку парсинг строк, как правило, медленный, рекомендуется не использовать это.

Пример

toDaysSinceYearZero

Возвращает для указанной даты количество дней, прошедших с 1 января 0000 в пролектическом григорианском календаре, определенном ISO 8601. Расчет такой же, как в функции MySQL TO_DAYS().

Синтаксис

Псевдоним: TO_DAYS

Аргументы

  • date — Дата, от которой нужно вычислить количество дней, прошедших с года ноль. Дата, Date32, DateTime или DateTime64.
  • time_zone — Константное значение типа String или выражение, представляющее часовой пояс. String types

Возвращаемое значение

Количество дней, прошедших с даты 0000-01-01. UInt32.

Пример

Результат:

См. также

fromDaysSinceYearZero

Возвращает соответствующую дату для заданного количества дней, прошедших с 1 января 0000 года в пролектическом григорианском календаре, определённом ISO 8601. Вычисление такое же, как в функции MySQL FROM_DAYS().

Результат неопределён, если его нельзя представить в пределах типа Date.

Синтаксис

Псевдоним: FROM_DAYS

Аргументы

  • days — Количество дней, прошедших с нулевого года.

Возвращаемое значение

Дата, соответствующая количеству дней, прошедших с нулевого года. Date.

Пример

Результат:

См. также

fromDaysSinceYearZero32

Как и fromDaysSinceYearZero, но возвращает Date32.

age

Возвращает компонент unit разности между startdate и enddate. Разность вычисляется с точностью до 1 наносекунды. Например, разность между 2021-12-29 и 2022-01-01 составляет 3 дня для единицы day, 0 месяцев для единицы month, 0 лет для единицы year.

Для альтернативы функции age смотрите функцию date_diff.

Синтаксис

Аргументы

  • unit — Тип интервала для результата. String. Возможные значения:

    • nanosecond, nanoseconds, ns
    • microsecond, microseconds, us, u
    • millisecond, milliseconds, ms
    • second, seconds, ss, s
    • minute, minutes, mi, n
    • hour, hours, hh, h
    • day, days, dd, d
    • week, weeks, wk, ww
    • month, months, mm, m
    • quarter, quarters, qq, q
    • year, years, yyyy, yy
  • startdate — Первое значение времени для вычитания (умемое). Date, Date32, DateTime или DateTime64.

  • enddate — Второе значение времени, из которого вычитается (уменьшаемое). Date, Date32, DateTime или DateTime64.

  • timezoneНазвание часового пояса (необязательно). Если указано, применяется к обоим startdate и enddate. Если не указано, используются часовые пояса startdate и enddate. Если они разные, результат неопределён. String.

Возвращаемое значение

Разность между enddate и startdate, выраженная в unit. Int.

Пример

Результат:

Результат:

date_diff

Возвращает количество пересечённых границ заданного unit между startdate и enddate. Разность вычисляется с использованием относительных единиц, например разность между 2021-12-29 и 2022-01-01 составляет 3 дня для единицы day (см. toRelativeDayNum), 1 месяц для единицы month (см. toRelativeMonthNum) и 1 год для единицы year (см. toRelativeYearNum).

Если была указана единица week, date_diff предполагает, что недели начинаются с понедельника. Обратите внимание, что это поведение отличается от функции toWeek(), в которой недели по умолчанию начинаются с воскресенья.

Для альтернативы функции date_diff смотрите функцию age.

Синтаксис

Псевдонимы: dateDiff, DATE_DIFF, timestampDiff, timestamp_diff, TIMESTAMP_DIFF.

Аргументы

  • unit — Тип интервала для результата. String. Возможные значения:

    • nanosecond, nanoseconds, ns
    • microsecond, microseconds, us, u
    • millisecond, milliseconds, ms
    • second, seconds, ss, s
    • minute, minutes, mi, n
    • hour, hours, hh, h
    • day, days, dd, d
    • week, weeks, wk, ww
    • month, months, mm, m
    • quarter, quarters, qq, q
    • year, years, yyyy, yy
  • startdate — Первое временное значение, из которого вычитается (умемое). Date, Date32, DateTime или DateTime64.

  • enddate — Второе временное значение, из которого вычитается (уменьшаемое). Date, Date32, DateTime или DateTime64.

  • timezoneНазвание часового пояса (необязательно). Если указано, оно применяется к обоим startdate и enddate. Если не указано, используются часовые пояса startdate и enddate. Если они не одинаковы, результат неопределён. String.

Возвращаемое значение

Разность между enddate и startdate, выраженная в unit. Int.

Пример

Результат:

Результат:

date_trunc

Обрезает временные данные по указанной части даты.

Синтаксис

Псевдоним: dateTrunc.

Аргументы

  • unit — Тип интервала, к которому нужно обрезать результат. String Literal. Возможные значения:

    • nanosecond - Совместимо только с DateTime64
    • microsecond - Совместимо только с DateTime64
    • milisecond - Совместимо только с DateTime64
    • second
    • minute
    • hour
    • day
    • week
    • month
    • quarter
    • year

    Аргумент unit не чувствителен к регистру.

  • value — Дата и время. Date, Date32, DateTime или DateTime64.

  • timezoneНазвание часового пояса для возвращаемого значения (необязательно). Если не указано, функция использует часовой пояс параметра value. String.

Возвращаемое значение

Если аргумент unit равен Год, Квартал, Месяц или Неделя,

  • и аргумент value равен Date32 или DateTime64, то возвращается Date32,
  • в противном случае возвращается Date.

Если аргумент unit равен День, Час, Минуту или Секунду,

  • и аргумент value равен Date32 или DateTime64, то возвращается DateTime64,
  • в противном случае возвращается DateTime.

Если аргумент unit равен Миллисекунде, Микросекунде или Наносекунде, тогда возвращается DateTime64 со шкалой 3, 6 или 9 (в зависимости от аргумента unit).

Пример

Запрос без часового пояса:

Результат:

Запрос с указанным часовым поясом:

Результат:

См. также

date_add

Добавляет временной интервал или дату к указанной дате или дате с временем.

Если прибавление приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Альтернативный синтаксис:

Псевдонимы: dateAdd, DATE_ADD.

Аргументы

  • unit — Тип интервала, который нужно добавить. Примечание: Это не String и, следовательно, не должен быть заключён в кавычки. Возможные значения:

    • second
    • minute
    • hour
    • day
    • week
    • month
    • quarter
    • year
  • value — Значение интервала для добавления. Int.

  • date — Дата или дата с временем, к которой добавляется value. Date, Date32, DateTime или DateTime64.

Возвращаемое значение

Дата или дата с временем, полученная в результате добавления value, выраженного в unit, к date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

Результат:

См. также

date_sub

Вычитает временной интервал или дату из указанной даты или даты с временем.

Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Альтернативный синтаксис:

Псевдонимы: dateSub, DATE_SUB.

Аргументы

  • unit — Тип интервала, который нужно вычесть. Примечание: Это не String и, следовательно, не должен быть заключён в кавычки.

    Возможные значения:

    • second
    • minute
    • hour
    • day
    • week
    • month
    • quarter
    • year
  • value — Значение интервала, которое нужно вычесть. Int.

  • date — Дата или дата с временем, из которой вычитается value. Date, Date32, DateTime или DateTime64.

Возвращаемое значение

Дата или дата с временем, полученная в результате вычитания value, выраженного в unit, из date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

Результат:

См. также

timestamp_add

Добавляет указанное временное значение к предоставленной дате или дате с временем.

Если прибавление приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Псевдонимы: timeStampAdd, TIMESTAMP_ADD.

Аргументы

  • date — Дата или дата с временем. Date, Date32, DateTime или DateTime64.

  • value — Значение интервала для добавления. Int.

  • unit — Тип интервала, который нужно добавить. String. Возможные значения:

    • second
    • minute
    • hour
    • day
    • week
    • month
    • quarter
    • year

Возвращаемое значение

Дата или дата с временем с указанным value, выраженным в unit, добавленным к date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

timestamp_sub

Вычитает временной интервал из указанной даты или даты с временем.

Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Псевдонимы: timeStampSub, TIMESTAMP_SUB.

Аргументы

  • unit — Тип интервала, который нужно вычесть. String. Возможные значения:

    • second
    • minute
    • hour
    • day
    • week
    • month
    • quarter
    • year
  • value — Значение интервала, которое нужно вычесть. Int.

  • date — Дата или дата с временем. Date, Date32, DateTime или DateTime64.

Возвращаемое значение

Дата или дата с временем, полученная в результате вычитания value, выраженного в unit, из date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

addDate

Добавляет временной интервал к указанной дате, дате с временем или строковому представлению даты / даты с временем.

Если прибавление приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Аргументы

  • date — Дата или дата с временем, к которой добавляется interval. Date, Date32, DateTime, DateTime64 или String
  • interval — Интервал для добавления. Interval.

Возвращаемое значение

Дата или дата с временем, полученная в результате добавления interval к date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

Псевдоним: ADDDATE

См. также

subDate

Вычитает временной интервал из указанной даты, даты с временем или строкового представления даты / даты с временем.

Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.

Синтаксис

Аргументы

  • date — Дата или дата с временем, из которой вычитается interval. Date, Date32, DateTime, DateTime64 или String
  • interval — Интервал для вычитания. Interval.

Возвращаемое значение

Дата или дата с временем, полученная в результате вычитания interval из date. Date, Date32, DateTime или DateTime64.

Пример

Результат:

Псевдоним: SUBDATE

См. также

now

Возвращает текущую дату и время на момент анализа запроса. Функция является постоянным выражением.

Псевдоним: current_timestamp.

Синтаксис

Аргументы

Возвращаемое значение

  • Текущая дата и время. DateTime.

Пример

Запрос без часового пояса:

Результат:

Запрос с указанным часовым поясом:

Результат:

now64

Возвращает текущую дату и время с точностью до доли секунды на момент анализа запроса. Функция является постоянным выражением.

Синтаксис

Аргументы

  • scale - Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ]. Обычно используются - 3 (по умолчанию) (миллисекунды), 6 (микросекунды), 9 (наносекунды).
  • timezoneНазвание часового пояса для возвращаемого значения (необязательно). String.

Возвращаемое значение

  • Текущая дата и время с точностью до доли секунды. DateTime64.

Пример

Результат:

nowInBlock

Возвращает текущую дату и время на момент обработки каждого блока данных. В отличие от функции now, это не постоянное выражение, и возвращаемое значение будет различаться в разных блоках для долгих запросов.

Используйте эту функцию для генерации текущего времени в долгих запросах вставки SELECT.

Синтаксис

Аргументы

Возвращаемое значение

  • Текущая дата и время на момент обработки каждого блока данных. DateTime.

Пример

Результат:

today

Возвращает текущую дату на момент анализа запроса. Это то же самое, что и 'toDate(now())' и имеет псевдонимы: curdate, current_date.

Синтаксис

Аргументы

  • Нет

Возвращаемое значение

Пример

Запрос:

Результат:

Выполнение запроса выше 3 марта 2024 года вернёт следующий ответ:

yesterday

Принимает ноль аргументов и возвращает дату вчерашнего дня на момент анализа запроса. То же самое, что и 'today() - 1'.

timeSlot

Округляет время до начала получасового интервала.

Синтаксис

Аргументы

  • time — Время, которое нужно округлить до начала получасового интервала. DateTime/Date32/DateTime64.
  • time_zone — Значение типа String или выражение, представляющее часовой пояс. String.
примечание

Хотя эта функция может принимать значения расширенных типов Date32 и DateTime64 в качестве аргумента, передача времени за пределами нормального диапазона (год 1970 до 2149 для Date / 2106 для DateTime) приведёт к ошибочным результатам.

Тип возвращаемого значения

  • Возвращает округлённое время до начала получасового интервала. DateTime.

Пример

Запрос:

Результат:

toYYYYMM

Преобразует дату или дату с временем в число UInt32, содержащее номер года и месяца (YYYY * 100 + MM). Принимает второй необязательный аргумент - часовой пояс. Если указан, часовой пояс должен быть строковой константой.

Эта функция является противоположностью функции YYYYMMDDToDate().

Пример

Результат:

toYYYYMMDD

Преобразует дату или дату с временем в число UInt32, содержащее номер года и месяца (YYYY * 10000 + MM * 100 + DD). Принимает второй необязательный аргумент - часовой пояс. Если указан, часовой пояс должен быть строковой константой.

Пример

Результат:

toYYYYMMDDhhmmss

Преобразует дату или дату с временем в число UInt64, содержащее номер года и месяца (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). Принимает второй необязательный аргумент - часовой пояс. Если указан, часовой пояс должен быть строковой константой.

Пример

Результат:

YYYYMMDDToDate

Преобразует число, содержащее номера года, месяца и дня в Date.

Эта функция является противоположностью функции toYYYYMMDD().

Выходное значение неопределено, если входное значение не кодирует допустимое значение даты.

Синтаксис

Аргументы

  • yyyymmdd - Число, представляющее год, месяц и день. Integer, Float или Decimal.

Возвращаемое значение

  • Дата, созданная из аргументов. Date.

Пример

Результат:

YYYYMMDDToDate32

Как функция YYYYMMDDToDate(), но производит Date32.

YYYYMMDDhhmmssToDateTime

Преобразует число, содержащее год, месяц, день, часы, минуты и секунды в DateTime.

Выходное значение неопределено, если входное значение не кодирует допустимое значение DateTime.

Эта функция является противоположностью функции toYYYYMMDDhhmmss().

Синтаксис

Аргументы

  • yyyymmddhhmmss - Число, представляющее год, месяц и день. Integer, Float или Decimal.
  • timezone - Часовой пояс для возвращаемого значения (необязательно).

Возвращаемое значение

  • Дата и время, созданные из аргументов. DateTime.

Пример

Результат:

YYYYMMDDhhmmssToDateTime64

Как функция YYYYMMDDhhmmssToDate(), но производит DateTime64.

Принимает дополнительный необязательный параметр precision после параметра timezone.

changeYear

Изменяет компонент года даты или даты с временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Тот же тип, что и date_or_datetime.

Пример

Результат:

changeMonth

Изменяет компонент месяца даты или даты с временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает значение того же типа, что и date_or_datetime.

Пример

Результат:

changeDay

Изменяет компонент дня даты или даты с временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает значение того же типа, что и date_or_datetime.

Пример

Результат:

changeHour

Изменяет компонент часа в дате или дате со временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает значение того же типа, что и date_or_datetime. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.

Пример

Результат:

changeMinute

Изменяет компонент минуты в дате или дате со временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает значение того же типа, что и date_or_datetime. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.

Пример

Результат:

changeSecond

Изменяет компонент секунды в дате или дате со временем.

Синтаксис

Аргументы

Возвращаемое значение

  • Возвращает значение того же типа, что и date_or_datetime. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.

Пример

Результат:

addYears

Добавляет указанное количество лет к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addQuarters

Добавляет указанное количество кварталов к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

  • date: Дата / дата со временем, к которой необходимо добавить указанное количество кварталов. Дата/Date32/ДатаВремя/DateTime64, Строка.
  • num: Количество кварталов, которое необходимо добавить. (U)Int*, Float*.

Возвращаемое значение

Пример

addMonths

Добавляет указанное количество месяцев к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

  • date: Дата / дата со временем, к которой необходимо добавить указанное количество месяцев. Дата/Date32/ДатаВремя/DateTime64, Строка.
  • num: Количество месяцев, которое необходимо добавить. (U)Int*, Float*.

Возвращаемое значение

Пример

addWeeks

Добавляет указанное количество недель к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addDays

Добавляет указанное количество дней к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addHours

Добавляет указанное количество часов к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addMinutes

Добавляет указанное количество минут к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addSeconds

Добавляет указанное количество секунд к дате, дате со временем или строково закодированной дате / дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

addMilliseconds

Добавляет указанное количество миллисекунд к дате со временем или строково закодированной дате со временем.

Синтаксис

Параметры

  • date_time: Дата со временем, к которой необходимо добавить указанное количество миллисекунд. ДатаВремя/DateTime64, Строка.
  • num: Количество миллисекунд, которое необходимо добавить. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time плюс num миллисекунд. DateTime64.

Пример

addMicroseconds

Добавляет указанное количество микросекунд к дате со временем или строково закодированной дате со временем.

Синтаксис

Параметры

  • date_time: Дата со временем, к которой необходимо добавить указанное количество микросекунд. ДатаВремя/DateTime64, Строка.
  • num: Количество микросекунд, которое необходимо добавить. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time плюс num микросекунд. DateTime64.

Пример

addNanoseconds

Добавляет указанное количество наносекунд к дате со временем или строково закодированной дате со временем.

Синтаксис

Параметры

  • date_time: Дата со временем, к которой необходимо добавить указанное количество наносекунд. ДатаВремя/DateTime64, Строка.
  • num: Количество наносекунд, которое необходимо добавить. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time плюс num наносекунд. DateTime64.

Пример

addInterval

Добавляет интервал к другому интервалу или к кортеже интервалов.

Синтаксис

Параметры

Возвращаемое значение

примечание

Интервалы одного типа будут объединяться в один интервал. Например, если передать toIntervalDay(1) и toIntervalDay(2), результат будет (3), а не (1,1).

Пример

Запрос:

Результат:

addTupleOfIntervals

Последовательно добавляет кортеж интервалов к дате или дате со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

Запрос:

Результат:

subtractYears

Вычитает указанное количество лет из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

subtractQuarters

Вычитает указанное количество кварталов из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

  • date: Дата / дата со временем, из которой необходимо вычесть указанное количество кварталов. Дата/Date32/ДатаВремя/DateTime64, Строка.
  • num: Количество кварталов, которые необходимо вычесть. (U)Int*, Float*.

Возвращаемое значение

Пример

subtractMonths

Вычитает указанное количество месяцев из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

subtractWeeks

Вычитает указанное количество недель из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

subtractDays

Вычитает указанное количество дней из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

Возвращаемое значение

Пример

subtractHours

Вычитает указанное количество часов из даты, даты со временем или строково закодированной даты / даты со временем.

Синтаксис

Параметры

  • date: Дата / дата со временем, из которой необходимо вычесть указанное количество часов. Дата/Date32/Datetime/Datetime64, Строка.
  • num: Количество часов, которые необходимо вычесть. (U)Int*, Float*.

Возвращаемое значение

Пример

subtractMinutes

Вычитает указанное количество минут из даты, даты с временем или даты / даты с временем в строковом формате.

Синтаксис

Параметры

  • date: Дата / дата с временем, из которой следует вычесть указанное количество минут. Date/Date32/DateTime/DateTime64, String.
  • num: Количество минут, которые нужно вычесть. (U)Int*, Float*.

Возвращаемое значение

Пример

subtractSeconds

Вычитает указанное количество секунд из даты, даты с временем или даты / даты с временем в строковом формате.

Синтаксис

Параметры

  • date: Дата / дата с временем, из которой следует вычесть указанное количество секунд. Date/Date32/DateTime/DateTime64, String.
  • num: Количество секунд, которые нужно вычесть. (U)Int*, Float*.

Возвращаемое значение

Пример

subtractMilliseconds

Вычитает указанное количество миллисекунд из даты с временем или даты с временем в строковом формате.

Синтаксис

Параметры

  • date_time: Дата с временем, из которой следует вычесть указанное количество миллисекунд. DateTime/DateTime64, String.
  • num: Количество миллисекунд, которые нужно вычесть. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time минус num миллисекунд. DateTime64.

Пример

subtractMicroseconds

Вычитает указанное количество микросекунд из даты с временем или даты с временем в строковом формате.

Синтаксис

Параметры

  • date_time: Дата с временем, из которой следует вычесть указанное количество микросекунд. DateTime/DateTime64, String.
  • num: Количество микросекунд, которые нужно вычесть. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time минус num микросекунд. DateTime64.

Пример

subtractNanoseconds

Вычитает указанное количество наносекунд из даты с временем или даты с временем в строковом формате.

Синтаксис

Параметры

  • date_time: Дата с временем, из которой следует вычесть указанное количество наносекунд. DateTime/DateTime64, String.
  • num: Количество наносекунд, которые нужно вычесть. (U)Int*, Float*.

Возвращаемое значение

  • Возвращает date_time минус num наносекунд. DateTime64.

Пример

subtractInterval

Добавляет отрицательный интервал к другому интервалу или кортежу интервалов.

Синтаксис

Параметры

  • interval_1: Первый интервал или интервал кортежа. interval, tuple(interval).
  • interval_2: Второй интервал, который должен быть отрицательным. interval.

Возвращаемое значение

  • Возвращает кортеж интервалов. tuple(interval).
примечание

Интервалы одного типа будут объединены в один интервал. Например, если переданы toIntervalDay(2) и toIntervalDay(1), то результатом будет (1), а не (2,1)

Пример

Запрос:

Результат:

subtractTupleOfIntervals

Последовательно вычитает кортеж интервалов из даты или даты с временем.

Синтаксис

Параметры

  • date: Первый интервал или интервал кортежа. Date/Date32/DateTime/DateTime64.
  • intervals: Кортеж интервалов, которые следует вычесть из date. tuple(interval).

Возвращаемое значение

Пример

Запрос:

Результат:

timeSlots

Для временного интервала, начинающегося в 'StartTime' и продолжающегося в течение 'Duration' секунд, возвращает массив моментов времени, состоящий из точек этого интервала, округленных вниз до 'Size' в секундах. 'Size' является необязательным параметром, по умолчанию установленным на 1800 (30 минут). Это необходимо, например, при поиске просмотров страниц в соответствующей сессии. Принимает DateTime и DateTime64 в качестве аргумента 'StartTime'. Для DateTime аргументы 'Duration' и 'Size' должны быть UInt32. Для 'DateTime64' они должны быть Decimal64. Возвращает массив DateTime/DateTime64 (тип возвращаемого значения соответствует типу 'StartTime'). Для DateTime64 масштаб возвращаемого значения может отличаться от масштаба 'StartTime' --- принимается наибольший масштаб среди всех заданных аргументов.

Синтаксис

Пример

Результат:

formatDateTime

Форматирует время в соответствии с заданной строкой формата. Формат является постоянным выражением, поэтому у вас не может быть нескольких форматов для одного результирующего столбца.

formatDateTime использует стиль формата MySQL для даты и времени, см. https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format.

Обратная операция этой функции — parseDateTime.

Псевдоним: DATE_FORMAT.

Синтаксис

Возвращаемое значение(я)

Возвращает время и дату в соответствии с определенным форматом.

Замены полей

Используя замены полей, вы можете определить шаблон для результирующей строки. Столбец "Пример" показывает результат форматирования для 2018-01-02 22:33:44.

Знак-заполнительОписаниеПример
%aсокращенное название дня недели (Пн-Вс)Пн
%bсокращенное название месяца (Янв-Дек)Янв
%cмесяц в виде целого числа (01-12), см. 'Примечание 4' ниже01
%Cгод, деленный на 100 и округленный до целого числа (00-99)20
%dдень месяца, с нулевым дополнением (01-31)02
%DКраткая дата MM/DD/YY, эквивалентная %m/%d/%y01/02/18
%eдень месяца, с пробелом ( 1-31)  2
%fдробная часть секунды, см. 'Примечание 1' и 'Примечание 2' ниже123456
%Fкраткая дата YYYY-MM-DD, эквивалентная %Y-%m-%d2018-01-02
%gдвухзначный формат года, выровненный по ISO 8601, сокращенный из четырехзначного обозначения18
%Gчетырехзначный формат года для номера недели ISO, рассчитанного по году, основанному на неделях определяемому по стандарту ISO 8601, обычно полезен только с %V2018
%hчас в 12-часовом формате (01-12)09
%Hчас в 24-часовом формате (00-23)22
%iминута (00-59)33
%Iчас в 12-часовом формате (01-12)10
%jдень года (001-366)002
%kчас в 24-часовом формате (00-23), см. 'Примечание 4' ниже14
%lчас в 12-часовом формате (01-12), см. 'Примечание 4' ниже09
%mмесяц в виде целого числа (01-12)01
%Mполное название месяца (Январь-Декабрь), см. 'Примечание 3' нижеЯнварь
%nсимвол новой строки ('')
%pобозначение AM или PMPM
%QЧетверть (1-4)1
%r12-часовое время HH:MM AM/PM, эквивалентное %h:%i %p10:30 PM
%R24-часовое время HH:MM, эквивалентное %H:%i22:33
%sсекунда (00-59)44
%Sсекунда (00-59)44
%tсимвол горизонтальной табуляции (')
%TФормат времени ISO 8601 (HH:MM:SS), эквивалентный %H:%i:%S22:33:44
%uДень недели по ISO 8601 как число, где понедельник — 1 (1-7)2
%VНомер недели ISO 8601 (01-53)01
%wдень недели в виде целого числа, где воскресенье — 0 (0-6)2
%Wполное название дня недели (Понедельник-Воскресенье)Понедельник
%yГод, последние две цифры (00-99)18
%YГод2018
%zСмещение времени от UTC в формате +HHMM или -HHMM-0500
%%символ %%

Примечание 1: В версиях ClickHouse ниже v23.4, %f выводит единичное ноль (0), если форматируемое значение является Датой, Date32 или Датой с временем (которые не имеют дробных секунд), или Датой с временем 64 с точностью 0. Предыдущее поведение может быть восстановлено с помощью установки formatdatetime_f_prints_single_zero = 1.

Примечание 2: В версиях ClickHouse ниже v25.1, %f выводит столько же цифр, сколько указано масштабом Даты с временем 64, вместо фиксированных 6 цифр. Предыдущее поведение может быть восстановлено с помощью установки formatdatetime_f_prints_scale_number_of_digits= 1.

Примечание 3: В версиях ClickHouse ниже v23.4, %M выводит минуту (00-59) вместо полного названия месяца (Январь-Декабрь). Предыдущее поведение может быть восстановлено с помощью установки formatdatetime_parsedatetime_m_is_month_name = 0.

Примечание 4: В версиях ClickHouse ниже v23.11 функция parseDateTime() требовала наличия ведущих нулей для форматирования %c (месяц) и %l/%k (час), например 07. В более поздних версиях ведущий ноль может быть опущен, например 7. Предыдущее поведение может быть восстановлено с помощью установки parsedatetime_parse_without_leading_zeros = 0. Имейте в виду, что функция formatDateTime() по умолчанию все еще выводит ведущие нули для %c и %l/%k, чтобы не нарушать существующие случаи. Это поведение можно изменить с помощью установки formatdatetime_format_without_leading_zeros = 1.

Пример

Результат:

Результат:

Кроме того, функция formatDateTime может принимать третий строковый аргумент, содержащий название часового пояса. Пример: Asia/Istanbul. В этом случае время форматируется в соответствии с указанным часовым поясом.

Пример

См. также

formatDateTimeInJodaSyntax

Похоже на formatDateTime, за исключением того, что форматирует дату и время в стиле Joda вместо стиля MySQL. Смотрите https://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html.

Обратная операция этой функции — parseDateTimeInJodaSyntax.

Замены полей

Используя замены полей, вы можете определить шаблон для результирующей строки.

Знак-заполнительОписаниеПрезентацияПримеры
GэпохатекстAD
Cвек эпохи (>=0)число20
Yгод эпохи (>=0)год1996
xгод недели (пока не поддерживается)год1996
wнеделя года (пока не поддерживается)число27
eдень неделичисло2
Eдень неделитекстВоскресенье; Вск
yгодгод1996
Dдень годачисло189
Mмесяц годамесяцИюль; Июль; 07
dдень месяцачисло10
aполдень днятекстPM
Kчас половины дня (0~11)число0
hчас на часах половины дня (1~12)число12
Hчас дня (0~23)число0
kчас на часах дня (1~24)число24
mминута часачисло30
sсекунда минутычисло55
Sдесятичная часть секундычисло978
zчасовой поястекстВосточный стандартный час; EST
Zсмещение часового поясазона-0800; -0812
'экранирование для текстаразделитель
''одинарная кавычкалитерал'

Пример

Результат:

dateName

Возвращает указанную часть даты.

Синтаксис

Аргументы

  • date_part — Часть даты. Возможные значения: 'year', 'quarter', 'month', 'week', 'dayofyear', 'day', 'weekday', 'hour', 'minute', 'second'. String.
  • date — Дата. Date, Date32, DateTime или DateTime64.
  • timezone — Часовой пояс. Необязательный. String.

Возвращаемое значение

  • Указанная часть даты. String

Пример

Результат:

monthName

Возвращает название месяца.

Синтаксис

Аргументы

Возвращаемое значение

  • Название месяца. String

Пример

Результат:

fromUnixTimestamp

Эта функция преобразует Unix-метку времени в календарную дату и время суток.

Вы можете вызвать её двумя способами:

При передаче одного аргумента типа Integer она возвращает значение типа DateTime, т.е. ведет себя как toDateTime.

Псевдоним: FROM_UNIXTIME.

Пример:

Результат:

При передаче двух или трех аргументов, где первый аргумент является значением типа Integer, Date, Date32, DateTime или DateTime64, второй аргумент — это константная строка формата, а третий аргумент — это необязательная константная строка часового пояса, функция возвращает значение типа String, т.е. ведет себя как formatDateTime. В этом случае используется стиль формата даты MySQL.

Пример:

Результат:

См. также

fromUnixTimestampInJodaSyntax

То же самое, что и fromUnixTimestamp, но когда вызывается вторым способом (два или три аргумента), форматирование выполняется с использованием стиля Joda вместо стиля MySQL.

Пример:

Результат:

toModifiedJulianDay

Преобразует дату в текстовом формате пролектического григорианского календаря YYYY-MM-DD в число модифицированного юлианского дня в формате Int32. Эта функция поддерживает даты с 0000-01-01 по 9999-12-31. Она вызывает исключение, если аргумент не может быть разобран как дата или если дата недействительна.

Синтаксис

Аргументы

Возвращаемое значение

  • Число модифицированного юлианского дня. Int32.

Пример

Результат:

toModifiedJulianDayOrNull

Похоже на toModifiedJulianDay(), но вместо того, чтобы вызывать исключения, возвращает NULL.

Синтаксис

Аргументы

Возвращаемое значение

  • Число модифицированного юлианского дня. Nullable(Int32).

Пример

Результат:

fromModifiedJulianDay

Преобразует число модифицированного юлианского дня в дату пролектического григорианского календаря в текстовом формате YYYY-MM-DD. Эта функция поддерживает номера дней от -678941 до 2973483 (что соответствует 0000-01-01 и 9999-12-31 соответственно). Она вызывает исключение, если номер дня выходит за пределы поддерживаемого диапазона.

Синтаксис

Аргументы

Возвращаемое значение

  • Дата в текстовом формате. String

Пример

Результат:

fromModifiedJulianDayOrNull

Похоже на fromModifiedJulianDayOrNull(), но вместо того, чтобы вызывать исключения, возвращает NULL.

Синтаксис

Аргументы

Возвращаемое значение

Пример

Результат:

toUTCTimestamp

Преобразует значение типа DateTime/DateTime64 из другого часового пояса в метку времени UTC. Эта функция включена в основном для совместимости с Apache Spark и аналогичными фреймворками.

Синтаксис

Аргументы

  • time_val — Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64
  • time_zone — Константное значение типа String или выражение, представляющее часовой пояс. Строковые типы

Возвращаемое значение

  • DateTime/DateTime64 в текстовом формате

Пример

Результат:

fromUTCTimestamp

Преобразует значение типа DateTime/DateTime64 из часового пояса UTC в метку времени другого часового пояса. Эта функция включена в основном для совместимости с Apache Spark и аналогичными фреймворками.

Синтаксис

Аргументы

  • time_val — Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64
  • time_zone — Константное значение типа String или выражение, представляющее часовой пояс. Строковые типы

Возвращаемое значение

  • DateTime/DateTime64 в текстовом формате

Пример

Результат:

UTCTimestamp

Возвращает текущую дату и время на момент анализа запроса. Эта функция является константным выражением.

примечание

Эта функция дает тот же результат, что и now('UTC'). Она была добавлена только для поддержки MySQL, а now является предпочтительным использованием.

Синтаксис

Псевдоним: UTC_timestamp.

Возвращаемое значение

  • Возвращает текущую дату и время на момент анализа запроса. DateTime.

Пример

Запрос:

Результат:

timeDiff

Возвращает разницу между двумя датами или датами с временными значениями. Разница вычисляется в единицах секунд. Это то же самое, что и dateDiff, и было добавлено только для поддержки MySQL. Предпочтительным вариантом является dateDiff.

Синтаксис

Аргументы

  • first_datetime — Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64
  • second_datetime — Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64

Возвращаемое значение

Разница между двумя датами или датами с временными значениями в секундах.

Пример

Запрос:

Результат: