Функции для работы с датами и временем
Большинство функций в этом разделе принимают необязательный аргумент часового пояса, например, 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,nsmicrosecond,microseconds,us,umillisecond,milliseconds,mssecond,seconds,ss,sminute,minutes,mi,nhour,hours,hh,hday,days,dd,dweek,weeks,wk,wwmonth,months,mm,mquarter,quarters,qq,qyear,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,nsmicrosecond,microseconds,us,umillisecond,milliseconds,mssecond,seconds,ss,sminute,minutes,mi,nhour,hours,hh,hday,days,dd,dweek,weeks,wk,wwmonth,months,mm,mquarter,quarters,qq,qyear,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- Совместимо только с DateTime64secondminutehourdayweekmonthquarteryear
Аргумент
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 и, следовательно, не должен быть заключён в кавычки. Возможные значения:secondminutehourdayweekmonthquarteryear
-
value— Значение интервала для добавления. Int. -
date— Дата или дата с временем, к которой добавляетсяvalue. Date, Date32, DateTime или DateTime64.
Возвращаемое значение
Дата или дата с временем, полученная в результате добавления value, выраженного в unit, к date. Date, Date32, DateTime или DateTime64.
Пример
Результат:
Результат:
См. также
date_sub
Вычитает временной интервал или дату из указанной даты или даты с временем.
Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.
Синтаксис
Альтернативный синтаксис:
Псевдонимы: dateSub, DATE_SUB.
Аргументы
-
unit— Тип интервала, который нужно вычесть. Примечание: Это не String и, следовательно, не должен быть заключён в кавычки.Возможные значения:
secondminutehourdayweekmonthquarteryear
-
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. Возможные значения:secondminutehourdayweekmonthquarteryear
Возвращаемое значение
Дата или дата с временем с указанным value, выраженным в unit, добавленным к date. Date, Date32, DateTime или DateTime64.
Пример
Результат:
timestamp_sub
Вычитает временной интервал из указанной даты или даты с временем.
Если вычитание приводит к значению, выходящему за границы типа данных, результат неопределён.
Синтаксис
Псевдонимы: timeStampSub, TIMESTAMP_SUB.
Аргументы
-
unit— Тип интервала, который нужно вычесть. String. Возможные значения:secondminutehourdayweekmonthquarteryear
-
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
Возвращаемое значение
Разница между двумя датами или датами с временными значениями в секундах.
Пример
Запрос:
Результат: