Функции для работы с датами и временем
Большинство функций в этом разделе принимают необязательный аргумент временной зоны, например, 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,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.
Возвращаемое значение
- Значение, обрезанное до указанной части даты. DateTime.
Пример
Запрос без временной зоны:
Результат:
Запрос с указанной временной зоной:
Результат:
См. также
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, это не постоянное выражение, и возвращаемое значение будет отличаться для разных блоков в длинных запросах.
Имеет смысл использовать эту функцию для генерации текущего времени в длительных запросах 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
Возвращаемое значение
Разница между двумя датами или датами с временными значениями в секундах.
Пример
Запрос:
Результат: