Функции для работы с датами и временем
Большинство функций в этом разделе принимают необязательный аргумент часового пояса, например, Europe/Amsterdam
. В этом случае часовой пояс будет указанным, а не локальным (по умолчанию).
Пример
makeDate
Создает дату
- из аргументов год, месяц и день, или
- из аргументов год и день года.
Синтаксис
Псевдоним:
MAKEDATE(year, month, day);
MAKEDATE(year, day_of_year);
Аргументы
year
— год. Целое число, число с плавающей запятой или десятичное число.month
— месяц. Целое число, число с плавающей запятой или десятичное число.day
— день. Целое число, число с плавающей запятой или десятичное число.day_of_year
— день в году. Целое число, число с плавающей запятой или десятичное число.
Возвращаемое значение
- Дата, созданная из аргументов. Дата.
Пример
Создать дату из года, месяца и дня:
Результат:
Создать дату из года и дня в году:
Результат:
makeDate32
Создает дату типа Date32 из года, месяца, дня (или по желанию из года и дня).
Синтаксис
Аргументы
year
— год. Целое число, число с плавающей запятой или десятичное число.month
— месяц (необязательно). Целое число, число с плавающей запятой или десятичное число.day
— день. Целое число, число с плавающей запятой или десятичное число.
Если month
опущен, то day
должен принимать значение от 1
до 365
, в противном случае он должен иметь значение от 1
до 31
.
Возвращаемые значения
- Дата, созданная из аргументов. Date32.
Примеры
Создать дату из года, месяца и дня:
Запрос:
Результат:
Создать дату из года и дня в году:
Запрос:
Результат:
makeDateTime
Создает DateTime из аргументов года, месяца, дня, часа, минуты и секунды.
Синтаксис
Аргументы
year
— год. Целое число, число с плавающей запятой или десятичное число.month
— месяц. Целое число, число с плавающей запятой или десятичное число.day
— день. Целое число, число с плавающей запятой или десятичное число.hour
— час. Целое число, число с плавающей запятой или десятичное число.minute
— минута. Целое число, число с плавающей запятой или десятичное число.second
— секунда. Целое число, число с плавающей запятой или десятичное число.timezone
— часовой пояс для возвращаемого значения (необязательно).
Возвращаемое значение
- Дата и время, созданные из аргументов. DateTime.
Пример
Результат:
makeDateTime64
Создает значение типа DateTime64 из его компонентов: год, месяц, день, час, минута, секунда. С возможностью указания точности до миллисекунд.
Синтаксис
Аргументы
year
— год (0-9999). Целое число, число с плавающей запятой или десятичное число.month
— месяц (1-12). Целое число, число с плавающей запятой или десятичное число.day
— день (1-31). Целое число, число с плавающей запятой или десятичное число.hour
— час (0-23). Целое число, число с плавающей запятой или десятичное число.minute
— минута (0-59). Целое число, число с плавающей запятой или десятичное число.second
— секунда (0-59). Целое число, число с плавающей запятой или десятичное число.precision
— необязательная точность десятичной части (0-9). Целое число.
Возвращаемое значение
- Дата и время, созданные из переданных аргументов. DateTime64.
Пример
timestamp
Преобразует первый аргумент 'expr' в тип DateTime64(6). Если предоставлен второй аргумент 'expr_time', он добавляет указанное время к преобразованному значению.
Синтаксис
Псевдоним: TIMESTAMP
Аргументы
expr
- Дата или дата с временем. Строка.expr_time
- необязательный параметр. Время для добавления. Строка.
Примеры
Результат:
Результат:
Возвращаемое значение
- DateTime64(6)
timeZone
Возвращает часовой пояс текущей сессии, т.е. значение настройки session_timezone. Если функция выполняется в контексте распределенной таблицы, то она генерирует обычную колонку со значениями, относящимися к каждой шард, в противном случае она производит постоянное значение.
Синтаксис
Псевдоним: timezone
.
Возвращаемое значение
- Часовой пояс. Строка.
Пример
Результат:
См. также
serverTimeZone
Возвращает часовой пояс сервера, т.е. значение настройки timezone. Если функция выполняется в контексте распределенной таблицы, то она генерирует обычную колонку со значениями, относящимися к каждой шард. В противном случае, она производит постоянное значение.
Синтаксис
Псевдоним: serverTimezone
.
Возвращаемое значение
- Часовой пояс. Строка.
Пример
Результат:
См. также
toTimeZone
Преобразует дату или дату с временем в указанный часовой пояс. Не изменяет внутреннее значение (количество unix секунд) данных, только атрибут часового пояса значения и строковое представление значения изменяются.
Синтаксис
Псевдоним: toTimezone
.
Аргументы
value
— Время или дата и время. DateTime64.timezone
— Часовой пояс для возвращаемого значения. Строка. Этот аргумент постоянен, посколькуtoTimezone
изменяет часовой пояс колонки (часовой пояс является атрибутом типовDateTime*
).
Возвращаемое значение
- Дата и время. DateTime.
Пример
Результат:
См. также
- formatDateTime - поддерживает неконстантный часовой пояс.
- toString - поддерживает неконстантный часовой пояс.
timeZoneOf
Возвращает имя часового пояса типов DateTime или DateTime64.
Синтаксис
Псевдоним: timezoneOf
.
Аргументы
value
— Дата и время. DateTime или DateTime64.
Возвращаемое значение
- Имя часового пояса. Строка.
Пример
Результат:
timeZoneOffset
Возвращает смещение часового пояса в секундах от UTC. Функция учитывает летнее время и исторические изменения часового пояса на указанную дату и время. Используется база данных часовых поясов IANA для вычисления смещения.
Синтаксис
Псевдоним: timezoneOffset
.
Аргументы
value
— Дата и время. DateTime или DateTime64.
Возвращаемое значение
- Смещение от UTC в секундах. Int32.
Пример
Результат:
toYear
Возвращает компонент года (н.э.) даты или даты с временем.
Синтаксис
Псевдоним: YEAR
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Год данной даты/времени. UInt16.
Пример
Результат:
toQuarter
Возвращает квартал (1-4) даты или даты с временем.
Синтаксис
Псевдоним: QUARTER
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Квартал года (1, 2, 3 или 4) данной даты/времени. UInt8.
Пример
Результат:
toMonth
Возвращает компонент месяца (1-12) даты или даты с временем.
Синтаксис
Псевдоним: MONTH
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Месяц года (1 - 12) данной даты/времени. UInt8.
Пример
Результат:
toDayOfYear
Возвращает номер дня в году (1-366) даты или даты с временем.
Синтаксис
Псевдоним: DAYOFYEAR
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- День года (1 - 366) данной даты/времени. UInt16.
Пример
Результат:
toDayOfMonth
Возвращает номер дня в месяце (1-31) даты или даты с временем.
Синтаксис
Псевдонимы: DAYOFMONTH
, DAY
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- День месяца (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 или DateTime64mode
- определяет, какой день недели является первым. Возможные значения: 0, 1, 2 или 3. См. таблицу выше для различий.timezone
- необязательный параметр, он ведет себя как любая другая функция преобразования.
Первый аргумент также можно указать как Строку в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только по причинам совместимости с MySQL, который ожидается определенными сторонними инструментами. Поскольку поддержка строковых аргументов может в будущем быть сделана зависимой от новых настроек совместимости с MySQL, и поскольку разбор строк обычно медленный, рекомендуется не использовать его.
Возвращаемое значение
- День недели (1-7), в зависимости от выбранного режима, данной даты/времени
Пример
Следующая дата - 21 апреля 2023 года, что был пятница:
Результат:
toHour
Возвращает компонент часа (0-24) даты с временем.
Предполагается, что если часы переводятся вперед, это происходит на один час и в 2 часа ночи, а если часы переводятся назад, это происходит на один час и в 3 часа ночи (что не всегда точно, это зависит от часового пояса).
Синтаксис
Псевдоним: HOUR
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Час дня (0 - 23) данной даты/времени. UInt8.
Пример
Результат:
toMinute
Возвращает компонент минуты (0-59) даты с временем.
Синтаксис
Псевдоним: MINUTE
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Минута часа (0 - 59) данной даты/времени. UInt8.
Пример
Результат:
toSecond
Возвращает компонент секунды (0-59) даты с временем. Високосные секунды не учитываются.
Синтаксис
Псевдоним: SECOND
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Секунда в минуте (0 - 59) данной даты/времени. UInt8.
Пример
Результат:
toMillisecond
Возвращает компонент миллисекунды (0-999) даты с временем.
Синтаксис
Аргументы*
value
- DateTime или DateTime64
Псевдоним: 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
.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день года ввода даты/времени. Дата.
Пример
Результат:
toStartOfISOYear
Округляет дату или дату с временем до первого дня ISO года, который может отличаться от "обычного" года. (См. https://en.wikipedia.org/wiki/ISO_week_date.)
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день года ввода даты/времени. Дата.
Пример
Результат:
toStartOfQuarter
Округляет дату или дату с временем до первого дня квартала. Первый день квартала - это либо 1 января, 1 апреля, 1 июля, либо 1 октября. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день квартала данной даты/времени. Дата.
Пример
Результат:
toStartOfMonth
Округляет дату или дату с временем до первого дня месяца. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день месяца данной даты/времени. Дата.
Пример
Результат:
Поведение разбора неправильных дат специфично для реализации. ClickHouse может вернуть дату ноль, вызвать исключение или выполнить "естественный" переполнение.
toLastDayOfMonth
Округляет дату или дату с временем до последнего дня месяца. Возвращает дату.
Синтаксис
Псевдоним: LAST_DAY
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Последний день месяца данной даты/времени. Дата.
Пример
Результат:
toMonday
Округляет дату или дату с временем до ближайшего понедельника. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Дата ближайшего понедельника на или до данной даты. Дата.
Пример
Результат:
toStartOfWeek
Округляет дату или дату с временем до ближайшего воскресенья или понедельника. Возвращает дату. Аргумент режима работает точно так же, как аргумент режима в функции toWeek()
. Если режим не указан, по умолчанию используется 0.
Синтаксис
Аргументы
t
- Дата, Date32, DateTime или DateTime64mode
- определяет первый день недели, как описано в функции toWeek()timezone
- необязательный параметр, ведет себя как любая другая функция преобразования
Возвращаемое значение
- Дата ближайшего воскресенья или понедельника на или до указанной даты, в зависимости от режима. Дата.
Пример
Результат:
toLastDayOfWeek
Округляет дату или дату с временем до ближайшей субботы или воскресенья. Возвращает дату.
Аргумент режима работает точно так же, как аргумент режима в функции toWeek()
. Если режим не указан, режим принимается равным 0.
Синтаксис
Аргументы
t
- Дата, Date32, DateTime или DateTime64mode
- определяет последний день недели, как описано в функции toWeektimezone
- необязательный параметр, ведет себя как любая другая функция преобразования
Возвращаемое значение
- Дата ближайшего воскресенья или понедельника на или после указанной даты, в зависимости от режима. Дата.
Пример
Результат:
toStartOfDay
Округляет дату с временем до начала дня.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Начало дня для указанной даты/времени. DateTime.
Пример
Результат:
toStartOfHour
Округляет дату с временем до начала часа.
Синтаксис
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Начало часа для указанной даты/времени. DateTime.
Пример
Результат:
toStartOfMinute
Округляет дату с временем до начала минуты.
Синтаксис
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Начало минуты для указанной даты/времени. 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
Округляет дату с временем до начала пятиминутного интервала.
Синтаксис
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Начало пятиминутного интервала для указанной даты/времени. DateTime.
Пример
Результат:
toStartOfTenMinutes
Округляет дату с временем до начала десятиминутного интервала.
Синтаксис
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Начало десятиминутного интервала для указанной даты/времени. DateTime.
Пример
Результат:
toStartOfFifteenMinutes
Округляет дату с временем до начала пятнадцатиминутного интервала.
Синтаксис
Аргументы
value
- DateTime или DateTime64
Возвращаемое значение
- Начало пятнадцатиминутного интервала для указанной даты/времени. 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
Преобразует дату или дату с временем в количество лет, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество лет с фиксированной референсной точки в прошлом. UInt16.
Пример
Запрос:
Результат:
toRelativeQuarterNum
Преобразует дату или дату с временем в количество кварталов, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество кварталов от фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeMonthNum
Преобразует дату или дату с временем в количество месяцев, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество месяцев с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeWeekNum
Преобразует дату или дату с временем в количество недель, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество недель с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeDayNum
Преобразует дату или дату с временем в количество дней, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество дней с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeHourNum
Преобразует дату или дату с временем в количество часов, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество часов с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeMinuteNum
Преобразует дату или дату с временем в количество минут, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество минут с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toRelativeSecondNum
Преобразует дату или дату с временем в количество секунд, прошедших с определенной фиксированной точки в прошлом.
Синтаксис
Аргументы
date
— Дата или дата с временем. Дата/DateTime/DateTime64.
Возвращаемое значение
- Количество секунд с фиксированной референсной точки в прошлом. UInt32.
Пример
Запрос:
Результат:
toISOYear
Преобразует дату или дату с временем в ISO год в виде числа UInt16.
Синтаксис
Аргументы
value
— Значение с датой или датой с временем. Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Входное значение, преобразованное в номер 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
- Совместимо только с DateTime64microsecond
- Совместимо только с DateTime64milisecond
- Совместимо только с DateTime64second
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 или Stringinterval
— Интервал для добавления. Interval.
Возвращаемое значение
Дата или дата с временем, полученная в результате добавления interval
к date
. Date, Date32, DateTime или DateTime64.
Пример
Результат:
Псевдоним: ADDDATE
См. также
subDate
Вычитает временной интервал из указанной даты, даты с временем или строкового представления даты / даты с временем.
Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.
Синтаксис
Аргументы
date
— Дата или дата с временем, из которой вычитаетсяinterval
. Date, Date32, DateTime, DateTime64 или Stringinterval
— Интервал для вычитания. Interval.
Возвращаемое значение
Дата или дата с временем, полученная в результате вычитания interval
из date
. Date, Date32, DateTime или DateTime64.
Пример
Результат:
Псевдоним: SUBDATE
См. также
now
Возвращает текущую дату и время на момент анализа запроса. Функция является постоянным выражением.
Псевдоним: current_timestamp
.
Синтаксис
Аргументы
timezone
— Название часового пояса для возвращаемого значения (необязательно). String.
Возвращаемое значение
- Текущая дата и время. DateTime.
Пример
Запрос без часового пояса:
Результат:
Запрос с указанным часовым поясом:
Результат:
now64
Возвращает текущую дату и время с точностью до доли секунды на момент анализа запроса. Функция является постоянным выражением.
Синтаксис
Аргументы
scale
- Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ]. Обычно используются - 3 (по умолчанию) (миллисекунды), 6 (микросекунды), 9 (наносекунды).timezone
— Название часового пояса для возвращаемого значения (необязательно). String.
Возвращаемое значение
- Текущая дата и время с точностью до доли секунды. DateTime64.
Пример
Результат:
nowInBlock
Возвращает текущую дату и время на момент обработки каждого блока данных. В отличие от функции now, это не постоянное выражение, и возвращаемое значение будет различаться в разных блоках для долгих запросов.
Используйте эту функцию для генерации текущего времени в долгих запросах вставки SELECT.
Синтаксис
Аргументы
timezone
— Название часового пояса для возвращаемого значения (необязательно). String.
Возвращаемое значение
- Текущая дата и время на момент обработки каждого блока данных. DateTime.
Пример
Результат:
today
Возвращает текущую дату на момент анализа запроса. Это то же самое, что и 'toDate(now())' и имеет псевдонимы: curdate
, current_date
.
Синтаксис
Аргументы
- Нет
Возвращаемое значение
- Текущая дата. DateTime.
Пример
Запрос:
Результат:
Выполнение запроса выше 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()
.
Выходное значение неопределено, если входное значение не кодирует допустимое значение даты.
Синтаксис
Аргументы
Возвращаемое значение
- Дата, созданная из аргументов. Date.
Пример
Результат:
YYYYMMDDToDate32
Как функция YYYYMMDDToDate()
, но производит Date32.
YYYYMMDDhhmmssToDateTime
Преобразует число, содержащее год, месяц, день, часы, минуты и секунды в DateTime.
Выходное значение неопределено, если входное значение не кодирует допустимое значение DateTime.
Эта функция является противоположностью функции toYYYYMMDDhhmmss()
.
Синтаксис
Аргументы
yyyymmddhhmmss
- Число, представляющее год, месяц и день. Integer, Float или Decimal.timezone
- Часовой пояс для возвращаемого значения (необязательно).
Возвращаемое значение
- Дата и время, созданные из аргументов. DateTime.
Пример
Результат:
YYYYMMDDhhmmssToDateTime64
Как функция YYYYMMDDhhmmssToDate()
, но производит DateTime64.
Принимает дополнительный необязательный параметр precision
после параметра timezone
.
changeYear
Изменяет компонент года даты или даты с временем.
Синтаксис
Аргументы
date_or_datetime
- Date, Date32, DateTime или DateTime64value
- Новое значение года. Integer.
Возвращаемое значение
- Тот же тип, что и
date_or_datetime
.
Пример
Результат:
changeMonth
Изменяет компонент месяца даты или даты с временем.
Синтаксис
Аргументы
date_or_datetime
- Date, Date32, DateTime или DateTime64value
- Новое значение месяца. Integer.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
.
Пример
Результат:
changeDay
Изменяет компонент дня даты или даты с временем.
Синтаксис
Аргументы
date_or_datetime
- Date, Date32, DateTime или DateTime64value
- Новое значение дня. Integer.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
.
Пример
Результат:
changeHour
Изменяет компонент часа в дате или дате со временем.
Синтаксис
Аргументы
date_or_datetime
- Дата, Date32, ДатаВремя или DateTime64value
- новое значение часа. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.
Пример
Результат:
changeMinute
Изменяет компонент минуты в дате или дате со временем.
Синтаксис
Аргументы
date_or_datetime
- Дата, Date32, ДатаВремя или DateTime64value
- новое значение минуты. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.
Пример
Результат:
changeSecond
Изменяет компонент секунды в дате или дате со временем.
Синтаксис
Аргументы
date_or_datetime
- Дата, Date32, ДатаВремя или DateTime64value
- новое значение секунды. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если введено Дата, возвращает ДатаВремя. Если введено Date32, возвращает DateTime64.
Пример
Результат:
addYears
Добавляет указанное количество лет к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество лет. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество лет, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
лет. Дата/Date32/ДатаВремя/DateTime64.
Пример
addQuarters
Добавляет указанное количество кварталов к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество кварталов. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество кварталов, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
кварталов. Дата/Date32/ДатаВремя/DateTime64.
Пример
addMonths
Добавляет указанное количество месяцев к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество месяцев. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество месяцев, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
месяцев. Дата/Date32/ДатаВремя/DateTime64.
Пример
addWeeks
Добавляет указанное количество недель к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество недель. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество недель, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
недель. Дата/Date32/ДатаВремя/DateTime64.
Пример
addDays
Добавляет указанное количество дней к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество дней. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество дней, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
дней. Дата/Date32/ДатаВремя/DateTime64.
Пример
addHours
Добавляет указанное количество часов к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество часов. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество часов, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
часов. Дата/Date32/ДатаВремя/DateTime64.
Пример
addMinutes
Добавляет указанное количество минут к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество минут. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество минут, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
минут. Дата/Date32/ДатаВремя/DateTime64.
Пример
addSeconds
Добавляет указанное количество секунд к дате, дате со временем или строково закодированной дате / дате со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, к которой необходимо добавить указанное количество секунд. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество секунд, которое необходимо добавить. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
секунд. Дата/Date32/ДатаВремя/DateTime64.
Пример
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
Добавляет интервал к другому интервалу или к кортеже интервалов.
Синтаксис
Параметры
interval_1
: Первый интервал или кортеж интервалов. интервал, кортеж(интервал).interval_2
: Второй интервал, который будет добавлен. интервал.
Возвращаемое значение
Интервалы одного типа будут объединяться в один интервал. Например, если передать toIntervalDay(1)
и toIntervalDay(2)
, результат будет (3)
, а не (1,1)
.
Пример
Запрос:
Результат:
addTupleOfIntervals
Последовательно добавляет кортеж интервалов к дате или дате со временем.
Синтаксис
Параметры
date
: Первый интервал или кортеж интервалов. дата/date32/datetime/datetime64.intervals
: Кортеж интервалов для добавления кdate
. кортеж(интервал).
Возвращаемое значение
- Возвращает
date
с добавленнымиintervals
. дата/date32/datetime/datetime64.
Пример
Запрос:
Результат:
subtractYears
Вычитает указанное количество лет из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество лет. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество лет, которое необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
лет. Дата/Date32/ДатаВремя/DateTime64.
Пример
subtractQuarters
Вычитает указанное количество кварталов из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество кварталов. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество кварталов, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
кварталов. Дата/Date32/ДатаВремя/DateTime64.
Пример
subtractMonths
Вычитает указанное количество месяцев из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество месяцев. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество месяцев, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
месяцев. Дата/Date32/ДатаВремя/DateTime64.
Пример
subtractWeeks
Вычитает указанное количество недель из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество недель. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество недель, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
недель. Дата/Date32/ДатаВремя/DateTime64.
Пример
subtractDays
Вычитает указанное количество дней из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество дней. Дата/Date32/ДатаВремя/DateTime64, Строка.num
: Количество дней, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
дней. Дата/Date32/ДатаВремя/DateTime64.
Пример
subtractHours
Вычитает указанное количество часов из даты, даты со временем или строково закодированной даты / даты со временем.
Синтаксис
Параметры
date
: Дата / дата со временем, из которой необходимо вычесть указанное количество часов. Дата/Date32/Datetime/Datetime64, Строка.num
: Количество часов, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
часов. Дата/Date32/Datetime/DateTime64.
Пример
subtractMinutes
Вычитает указанное количество минут из даты, даты с временем или даты / даты с временем в строковом формате.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой следует вычесть указанное количество минут. Date/Date32/DateTime/DateTime64, String.num
: Количество минут, которые нужно вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
минут. Date/Date32/DateTime/DateTime64.
Пример
subtractSeconds
Вычитает указанное количество секунд из даты, даты с временем или даты / даты с временем в строковом формате.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой следует вычесть указанное количество секунд. Date/Date32/DateTime/DateTime64, String.num
: Количество секунд, которые нужно вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
секунд. Date/Date32/DateTime/DateTime64.
Пример
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.
Возвращаемое значение
Интервалы одного типа будут объединены в один интервал. Например, если переданы toIntervalDay(2)
и toIntervalDay(1)
, то результатом будет (1)
, а не (2,1)
Пример
Запрос:
Результат:
subtractTupleOfIntervals
Последовательно вычитает кортеж интервалов из даты или даты с временем.
Синтаксис
Параметры
date
: Первый интервал или интервал кортежа. Date/Date32/DateTime/DateTime64.intervals
: Кортеж интервалов, которые следует вычесть изdate
. tuple(interval).
Возвращаемое значение
- Возвращает
date
с вычтеннымиintervals
. Date/Date32/DateTime/DateTime64.
Пример
Запрос:
Результат:
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/%y | 01/02/18 |
%e | день месяца, с пробелом ( 1-31) | 2 |
%f | дробная часть секунды, см. 'Примечание 1' и 'Примечание 2' ниже | 123456 |
%F | краткая дата YYYY-MM-DD, эквивалентная %Y-%m-%d | 2018-01-02 |
%g | двухзначный формат года, выровненный по ISO 8601, сокращенный из четырехзначного обозначения | 18 |
%G | четырехзначный формат года для номера недели ISO, рассчитанного по году, основанному на неделях определяемому по стандарту ISO 8601, обычно полезен только с %V | 2018 |
%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 или PM | PM |
%Q | Четверть (1-4) | 1 |
%r | 12-часовое время HH:MM AM/PM, эквивалентное %h:%i %p | 10:30 PM |
%R | 24-часовое время HH:MM, эквивалентное %H:%i | 22:33 |
%s | секунда (00-59) | 44 |
%S | секунда (00-59) | 44 |
%t | символ горизонтальной табуляции (') | |
%T | Формат времени ISO 8601 (HH:MM:SS), эквивалентный %H:%i:%S | 22: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
Возвращает название месяца.
Синтаксис
Аргументы
date
— Дата или дата с временем. Date, DateTime или DateTime64.
Возвращаемое значение
- Название месяца. 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
. Она вызывает исключение, если аргумент не может быть разобран как дата или если дата недействительна.
Синтаксис
Аргументы
date
— Дата в текстовом формате. String или FixedString.
Возвращаемое значение
- Число модифицированного юлианского дня. Int32.
Пример
Результат:
toModifiedJulianDayOrNull
Похоже на toModifiedJulianDay(), но вместо того, чтобы вызывать исключения, возвращает NULL
.
Синтаксис
Аргументы
date
— Дата в текстовом формате. String или FixedString.
Возвращаемое значение
- Число модифицированного юлианского дня. Nullable(Int32).
Пример
Результат:
fromModifiedJulianDay
Преобразует число модифицированного юлианского дня в дату пролектического григорианского календаря в текстовом формате YYYY-MM-DD
. Эта функция поддерживает номера дней от -678941
до 2973483
(что соответствует 0000-01-01 и 9999-12-31 соответственно). Она вызывает исключение, если номер дня выходит за пределы поддерживаемого диапазона.
Синтаксис
Аргументы
day
— Число модифицированного юлианского дня. Любые целочисленные типы.
Возвращаемое значение
- Дата в текстовом формате. String
Пример
Результат:
fromModifiedJulianDayOrNull
Похоже на fromModifiedJulianDayOrNull(), но вместо того, чтобы вызывать исключения, возвращает NULL
.
Синтаксис
Аргументы
day
— Число модифицированного юлианского дня. Любые целочисленные типы.
Возвращаемое значение
- Дата в текстовом формате. Nullable(String)
Пример
Результат:
toUTCTimestamp
Преобразует значение типа DateTime/DateTime64 из другого часового пояса в метку времени UTC. Эта функция включена в основном для совместимости с Apache Spark и аналогичными фреймворками.
Синтаксис
Аргументы
time_val
— Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64time_zone
— Константное значение типа String или выражение, представляющее часовой пояс. Строковые типы
Возвращаемое значение
- DateTime/DateTime64 в текстовом формате
Пример
Результат:
fromUTCTimestamp
Преобразует значение типа DateTime/DateTime64 из часового пояса UTC в метку времени другого часового пояса. Эта функция включена в основном для совместимости с Apache Spark и аналогичными фреймворками.
Синтаксис
Аргументы
time_val
— Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64time_zone
— Константное значение типа String или выражение, представляющее часовой пояс. Строковые типы
Возвращаемое значение
- DateTime/DateTime64 в текстовом формате
Пример
Результат:
UTCTimestamp
Возвращает текущую дату и время на момент анализа запроса. Эта функция является константным выражением.
Эта функция дает тот же результат, что и now('UTC')
. Она была добавлена только для поддержки MySQL, а now
является предпочтительным использованием.
Синтаксис
Псевдоним: UTC_timestamp
.
Возвращаемое значение
- Возвращает текущую дату и время на момент анализа запроса. DateTime.
Пример
Запрос:
Результат:
timeDiff
Возвращает разницу между двумя датами или датами с временными значениями. Разница вычисляется в единицах секунд. Это то же самое, что и dateDiff
, и было добавлено только для поддержки MySQL. Предпочтительным вариантом является dateDiff
.
Синтаксис
Аргументы
first_datetime
— Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64second_datetime
— Константное значение типа DateTime/DateTime64 или выражение. Типы DateTime/DateTime64
Возвращаемое значение
Разница между двумя датами или датами с временными значениями в секундах.
Пример
Запрос:
Результат: