Функции для работы с датами и временем
Большинство функций в этом разделе принимают необязательный аргумент временной зоны, например, Europe/Amsterdam
. В этом случае временная зона будет указанной, а не локальной (по умолчанию).
Пример
makeDate
Создает Date
- из аргументов год, месяц и день, или
- из аргументов год и день года.
Синтаксис
Псевдоним:
MAKEDATE(year, month, day);
MAKEDATE(year, day_of_year);
Аргументы
year
— Год. Целое число, С плавающей точкой или Десятичное.month
— Месяц. Целое число, С плавающей точкой или Десятичное.day
— День. Целое число, С плавающей точкой или Десятичное.day_of_year
— День года. Целое число, С плавающей точкой или Десятичное.
Возвращаемое значение
- Дата, созданная из аргументов. Date.
Пример
Создать Дату из года, месяца и дня:
Результат:
Создать Дату из года и аргумента день года:
Результат:
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. Если аргумент режима опущен, режим по умолчанию - 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 - 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
.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день года данной даты/времени. Date.
Пример
Результат:
toStartOfISOYear
Округляет дату или дату с временем до первого дня ISO года, который может отличаться от "обычного" года. (См. https://en.wikipedia.org/wiki/ISO_week_date.)
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день года данной даты/времени. Date.
Пример
Результат:
toStartOfQuarter
Округляет дату или дату с временем до первого дня квартала. Первый день квартала - это 1 января, 1 апреля, 1 июля или 1 октября. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день квартала данной даты/времени. Date.
Пример
Результат:
toStartOfMonth
Округляет дату или дату с временем до первого дня месяца. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Первый день месяца данной даты/времени. Date.
Пример
Результат:
Поведение парсинга неправильных дат специфично для реализации. ClickHouse может вернуть дату с нулевым значением, выбросить исключение или сделать "естественное" переполнение.
toLastDayOfMonth
Округляет дату или дату с временем до последнего дня месяца. Возвращает дату.
Синтаксис
Псевдоним: LAST_DAY
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Последний день месяца данной даты/времени. Date.
Пример
Результат:
toMonday
Округляет дату или дату с временем до ближайшего понедельника. Возвращает дату.
Синтаксис
Аргументы
value
- Дата, Date32, DateTime или DateTime64
Возвращаемое значение
- Дата ближайшего понедельника на или до данной даты. Date.
Пример
Результат:
toStartOfWeek
Округляет дату или дату с временем до ближайшего воскресенья или понедельника. Возвращает дату. Аргумент mode работает точно так же, как аргумент mode в функции toWeek()
. Если режим не указан, по умолчанию используется значение 0.
Синтаксис
Аргументы
t
- Дата, Date32, DateTime или DateTime64mode
- определяет первый день недели, как описано в функции toWeek()timezone
- необязательный параметр, ведет себя как любая другая функция преобразования
Возвращаемое значение
- Дата ближайшего воскресенья или понедельника до или на заданной дате, в зависимости от режима. Дата.
Пример
Результат:
toLastDayOfWeek
Округляет дату или дату с временем до ближайшей субботы или воскресенья. Возвращает дату. Аргумент mode работает точно так же, как аргумент mode в функции 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.
Примеры
Запрос без часового пояса:
Результат:
Запрос с часовым поясом:
Результат:
См. также
- 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
Округляет дату с временем до начала пятиминутного интервала.
Синтаксис
Аргументы
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. Если аргумент 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
- Совместимо только с DateTime64microsecond
- Совместимо только с DateTime64milisecond
- Совместимо только с DateTime64second
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 или 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, это не постоянное выражение, и возвращаемое значение будет отличаться для разных блоков в длинных запросах.
Имеет смысл использовать эту функцию для генерации текущего времени в длительных запросах INSERT SELECT.
Синтаксис
Аргументы
timezone
— Имя временной зоны для возвращаемого значения (необязательный). String.
Возвращаемое значение
- Текущая дата и время в момент обработки каждого блока данных. DateTime.
Пример
Результат:
today
Возвращает текущую дату на момент анализа запроса. Это то же самое, что и 'toDate(now())', и имеет псевдонимы: curdate
, current_date
.
Синтаксис
Аргументы
- Нет
Возвращаемое значение
- Текущая дата. DateTime.
Пример
Запрос:
Результат:
Запуск запроса выше 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.
Синтаксис
Аргументы
Возвращаемое значение
- дата, созданная из аргументов. 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, DateTime или DateTime64value
- новое значение часа. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если входное значение - Дата, вернет DateTime. Если входное значение - Date32, вернет DateTime64.
Пример
Результат:
changeMinute
Изменяет компонент минуты в дате или дате с временем.
Синтаксис
Аргументы
date_or_datetime
- Дата, Date32, DateTime или DateTime64value
- новое значение минуты. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если входное значение - Дата, вернет DateTime. Если входное значение - Date32, вернет DateTime64.
Пример
Результат:
changeSecond
Изменяет компонент секунды в дате или дате с временем.
Синтаксис
Аргументы
date_or_datetime
- Дата, Date32, DateTime или DateTime64value
- новое значение секунды. Целое число.
Возвращаемое значение
- Возвращает значение того же типа, что и
date_or_datetime
. Если входное значение - Дата, вернет DateTime. Если входное значение - Date32, вернет DateTime64.
Пример
Результат:
addYears
Добавляет указанное количество лет к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество лет. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество лет для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
лет. Дата/Date32/DateTime/DateTime64.
Пример
addQuarters
Добавляет указанное количество кварталов к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество кварталов. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество кварталов для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
кварталов. Дата/Date32/DateTime/DateTime64.
Пример
addMonths
Добавляет указанное количество месяцев к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество месяцев. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество месяцев для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
месяцев. Дата/Date32/DateTime/DateTime64.
Пример
addWeeks
Добавляет указанное количество недель к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество недель. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество недель для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
недель. Дата/Date32/DateTime/DateTime64.
Пример
addDays
Добавляет указанное количество дней к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество дней. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество дней для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
дней. Дата/Date32/DateTime/DateTime64.
Пример
addHours
Добавляет указанное количество часов к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество часов. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество часов для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
часов. Дата/Date32/DateTime/DateTime64.
Пример
addMinutes
Добавляет указанное количество минут к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество минут. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество минут для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
минут. Дата/Date32/DateTime/DateTime64.
Пример
addSeconds
Добавляет указанное количество секунд к дате, дате с временем или дате / дате с временем в виде строки.
Синтаксис
Параметры
date
: Дата / дата с временем, к которой необходимо добавить указанное количество секунд. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество секунд для добавления. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
плюсnum
секунд. Дата/Date32/DateTime/DateTime64.
Пример
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
Добавляет интервал к другому интервалу или к кортежу интервалов.
Синтаксис
Параметры
interval_1
: Первый интервал или кортеж интервалов. интервал, кортеж(интервал).interval_2
: Второй интервал для добавления. интервал.
Возвращаемое значение
Интервалы одинакового типа будут объединены в один интервал. Например, если переданы toIntervalDay(1)
и toIntervalDay(2)
, то результат будет (3)
, а не (1,1)
.
Пример
Запрос:
Результат:
addTupleOfIntervals
Последовательно добавляет кортеж интервалов к дате или дате с временем.
Синтаксис
Параметры
date
: Первый интервал или кортеж интервалов. дата/дата32/дата-время/datetime64.intervals
: Кортеж интервалов, который следует добавить кdate
. кортеж(интервал).
Возвращаемое значение
- Возвращает
date
с добавленнымиintervals
. дата/дата32/дата-время/datetime64.
Пример
Запрос:
Результат:
subtractYears
Вычитает указанное количество лет из даты, даты с временем или строки с закодированной датой / датой с временем.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой необходимо вычесть указанное количество лет. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество лет, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
лет. Дата/Date32/DateTime/DateTime64.
Пример
subtractQuarters
Вычитает указанное количество кварталов из даты, даты с временем или строки с закодированной датой / датой с временем.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой необходимо вычесть указанное количество кварталов. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество кварталов, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
кварталов. Дата/Date32/DateTime/DateTime64.
Пример
subtractMonths
Вычитает указанное количество месяцев из даты, даты с временем или строки с закодированной датой / датой с временем.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой необходимо вычесть указанное количество месяцев. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество месяцев, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
месяцев. Дата/Date32/DateTime/DateTime64.
Пример
subtractWeeks
Вычитает указанное количество недель из даты, даты с временем или строки с закодированной датой / датой с временем.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой необходимо вычесть указанное количество недель. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество недель, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
недель. Дата/Date32/DateTime/DateTime64.
Пример
subtractDays
Вычитает указанное количество дней из даты, даты с временем или строки с закодированной датой / датой с временем.
Синтаксис
Параметры
date
: Дата / дата с временем, из которой необходимо вычесть указанное количество дней. Дата/Date32/DateTime/DateTime64, Строка.num
: Количество дней, которые необходимо вычесть. (U)Int*, Float*.
Возвращаемое значение
- Возвращает
date
минусnum
дней. Дата/Date32/DateTime/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 или 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
Возвращает название месяца.
Синтаксис
Аргументы
date
— Дата или дата с временем. Date, DateTime или DateTime64.
Возвращаемое значение
- Название месяца. 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
. Она генерирует исключение, если аргумент не может быть распознан как дата или если дата недействительна.
Синтаксис
Аргументы
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
Возвращаемое значение
Разница между двумя датами или датами с временными значениями в секундах.
Пример
Запрос:
Результат: