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

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

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

Пример

makeDate

Создает Date

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

Синтаксис

Псевдоним:

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

Аргументы

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

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

Пример

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

Результат:

Создать Дату из года и аргумента день года:

Результат:

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. Если аргумент режима опущен, режим по умолчанию - 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 - 59) данной даты/времени. 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.

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfISOYear

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfQuarter

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfMonth

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

Синтаксис

Аргументы

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

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

Пример

Результат:

примечание

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

toLastDayOfMonth

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

Синтаксис

Псевдоним: LAST_DAY

Аргументы

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

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

Пример

Результат:

toMonday

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfWeek

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

Синтаксис

Аргументы

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

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

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

Пример

Результат:

toLastDayOfWeek

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

Синтаксис

Аргументы

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

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

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

Пример

Результат:

toStartOfDay

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfHour

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfMinute

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

Синтаксис

Аргументы

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

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

Пример

Результат:

toStartOfSecond

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

Синтаксис

Аргументы

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

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

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

Примеры

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

Результат:

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

Результат:

См. также

  • Timezone параметр конфигурации сервера.

toStartOfMillisecond

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

Синтаксис

Аргументы

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

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

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

Примеры

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

Результат:

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

Результат:

См. также

  • Timezone параметр конфигурации сервера.

toStartOfMicrosecond

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

Синтаксис

Аргументы

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

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

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

Примеры

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

Результат:

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

Результат:

См. также

  • Timezone параметр конфигурации сервера.

toStartOfNanosecond

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

Синтаксис

Аргументы

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

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

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

Примеры

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

Результат:

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

Результат:

См. также

  • Timezone параметр конфигурации сервера.

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. Если аргумент mode пропущен, используется значение по умолчанию 0.

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

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

РежимПервый день неделиДиапазонНеделя 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 – Дата или DateTime.
  • mode – необязательный параметр, диапазон значений [0,9], по умолчанию 0.
  • timezone – необязательный параметр, ведет себя как любая другая функция преобразования.

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

Пример

toYearWeek

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

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

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

осторожно

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

Синтаксис

Псевдоним: YEARWEEK

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

Пример

toDaysSinceYearZero

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

Синтаксис

Псевдоним: TO_DAYS

Аргументы

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

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

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

Пример

Результат:

См. также

Псевдоним: 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.

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

  • Значение, обрезанное до указанной части даты. DateTime.

Пример

Запрос без временной зоны:

Результат:

Запрос с указанной временной зоной:

Результат:

См. также

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, это не постоянное выражение, и возвращаемое значение будет отличаться для разных блоков в длинных запросах.

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

Синтаксис

Аргументы

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

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

Пример

Результат:

today

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

Синтаксис

Аргументы

  • Нет

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

Пример

Запрос:

Результат:

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

yesterday

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

timeSlot

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

Синтаксис

Аргументы

  • time — Время, которое нужно округлить до начала получасового интервала. DateTime/Date32/DateTime64.
  • time_zone — Константное строковое значение типа или выражение, представляющее временную зону. 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().

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

Синтаксис

Аргументы

  • 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. Если входное значение - Дата, вернет DateTime. Если входное значение - Date32, вернет DateTime64.

Пример

Результат:

changeMinute

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

Синтаксис

Аргументы

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

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

Пример

Результат:

changeSecond

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

Синтаксис

Аргументы

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

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

Пример

Результат:

addYears

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

Синтаксис

Параметры

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

Пример

addQuarters

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

Синтаксис

Параметры

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

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

Пример

addMonths

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

Синтаксис

Параметры

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

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

Пример

addWeeks

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

Синтаксис

Параметры

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

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

Пример

addDays

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

Синтаксис

Параметры

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

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

Пример

addHours

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

Синтаксис

Параметры

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

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

Пример

addMinutes

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

Синтаксис

Параметры

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

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

Пример

addSeconds

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

Синтаксис

Параметры

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

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

Пример

addMilliseconds

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

Синтаксис

Параметры

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

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

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

Пример

addMicroseconds

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

Синтаксис

Параметры

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

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

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

Пример

addNanoseconds

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

Синтаксис

Параметры

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

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

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

Пример

addInterval

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

Синтаксис

Параметры

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

примечание

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

Пример

Запрос:

Результат:

addTupleOfIntervals

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

Синтаксис

Параметры

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

Пример

Запрос:

Результат:

subtractYears

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

Синтаксис

Параметры

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

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

Пример

subtractQuarters

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

Синтаксис

Параметры

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

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

Пример

subtractMonths

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

Синтаксис

Параметры

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

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

Пример

subtractWeeks

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

Синтаксис

Параметры

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

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

Пример

subtractDays

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

Синтаксис

Параметры

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

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

Пример

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 или DateTime (которые не имеют дробных секунд) или DateTime64 с точностью 0. Предыдущее поведение можно восстановить с помощью настройки formatdatetime_f_prints_single_zero = 1.

Примечание 2: В версиях ClickHouse ранее v25.1, %f выводит столько цифр, сколько указано масштабом DateTime64, вместо фиксированных 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часовой поястекстВосточноевропейское время; EET
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 timestamp в календарную дату и время дня.

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

При передаче одного аргумента типа 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

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

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

Пример

Запрос:

Результат: