Перейти к основному содержанию
Большинство функций в этом разделе принимают необязательный аргумент — часовой пояс, например Europe/Amsterdam. В этом случае используется указанный часовой пояс, а не локальный (по умолчанию). Пример
SELECT
    toDateTime('2016-06-15 23:00:00') AS time,
    toDate(time) AS date_local,
    toDate(time, 'Asia/Yekaterinburg') AS date_yekat,
    toString(time, 'US/Samoa') AS time_samoa
┌────────────────time─┬─date_local─┬─date_yekat─┬─time_samoa──────────┐
│ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-16 │ 2016-06-15 09:00:00 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘
Для совместимости со стандартом SQL следующие функции — NOW, CURRENT_TIMESTAMP, TODAY и CURRENT_DATE — можно использовать без скобок.

UTCTimestamp

Добавленный в: v22.11.0 Возвращает текущие дату и время на этапе анализа запроса. Функция является константным выражением. Эта функция возвращает тот же результат, что и now('UTC'). Она была добавлена только для поддержки MySQL. Предпочтительно использовать now. Синтаксис
UTCTimestamp()
Псевдонимы: UTC_timestamp Аргументы
  • Нет.
Возвращаемое значение Возвращает текущие дату и время на этапе анализа запроса. DateTime Примеры Получение текущей временной метки UTC
Query
SELECT UTCTimestamp()
Response
┌──────UTCTimestamp()─┐
│ 2024-05-28 08:32:09 │
└─────────────────────┘

YYYYMMDDToDate

Добавленный в: v23.9.0 Преобразует число, содержащее год, месяц и день, в Date. Эта функция обратна функции toYYYYMMDD(). Результат не определён, если входное значение не кодирует корректное значение Date. Синтаксис
YYYYMMDDToDate(YYYYMMDD)
Аргументы
  • YYYYMMDD — число, содержащее год, месяц и день. (U)Int* или Float* или Decimal
Возвращаемое значение Возвращает значение типа Date, сформированное из переданных аргументов Date Примеры Пример
Query
SELECT YYYYMMDDToDate(20230911);
Response
┌─toYYYYMMDD(20230911)─┐
│           2023-09-11 │
└──────────────────────┘

YYYYMMDDToDate32

Добавленный в: v23.9.0 Преобразует число, содержащее год, месяц и день, в Date32. Эта функция является обратной для toYYYYMMDD(). Результат не определён, если входное значение не кодирует корректное значение Date32. Синтаксис
YYYYMMDDToDate32(YYYYMMDD)
Аргументы
  • YYYYMMDD — число, содержащее год, месяц и день. (U)Int* или Float*, или Decimal
Возвращаемое значение Возвращает значение Date32 из указанных аргументов Date32 Примеры Пример
Query
SELECT YYYYMMDDToDate32(20000507);
Response
┌─YYYYMMDDToDate32(20000507)─┐
│                 2000-05-07 │
└────────────────────────────┘

YYYYMMDDhhmmssToDateTime

Добавленный в: v23.9.0 Преобразует число, содержащее год, месяц, день, час, минуту и секунду, в DateTime. Эта функция является обратной к функции toYYYYMMDDhhmmss(). Результат не определён, если входное значение не кодирует корректное значение DateTime. Синтаксис
YYYYMMDDhhmmssToDateTime(YYYYMMDDhhmmss[, timezone])
Аргументы
  • YYYYMMDDhhmmss — Число, содержащее год, месяц, день, час, минуту и секунду. (U)Int* или Float* или Decimal
  • timezone — Название часового пояса. String
Возвращаемое значение Возвращает значение DateTime из указанных аргументов DateTime Примеры Пример
Query
SELECT YYYYMMDDToDateTime(20230911131415);
Response
┌──────YYYYMMDDhhmmssToDateTime(20230911131415)─┐
│                           2023-09-11 13:14:15 │
└───────────────────────────────────────────────┘

YYYYMMDDhhmmssToDateTime64

Добавленный в: v23.9.0 Преобразует число, содержащее год, месяц, день, час, минуту и секунду, в DateTime64. Эта функция является обратной по отношению к функции toYYYYMMDDhhmmss(). Результат не определён, если входное значение не кодирует допустимое значение DateTime64. Синтаксис
YYYYMMDDhhmmssToDateTime64(YYYYMMDDhhmmss[, precision[, timezone]])
Аргументы
  • YYYYMMDDhhmmss — Число, содержащее год, месяц, день, часы, минуты и секунды. (U)Int* или Float* или Decimal
  • precision — Точность дробной части (0-9). UInt8
  • timezone — Название часового пояса. String
Возвращаемое значение Возвращает значение DateTime64 на основе переданных аргументов DateTime64 Примеры Пример
Query
SELECT YYYYMMDDhhmmssToDateTime64(20230911131415, 3, 'Asia/Istanbul');
Response
┌─YYYYMMDDhhmm⋯/Istanbul')─┐
│  2023-09-11 13:14:15.000 │
└──────────────────────────┘

addDate

Добавленный в: v23.9.0 Добавляет интервал времени к указанной дате, дате и времени либо к дате или дате и времени, представленным в виде строки. Если в результате сложения получается значение, выходящее за пределы допустимого диапазона типа данных, результат не определён. Синтаксис
addDate(datetime, interval)
Аргументы
  • datetime — дата или дата и время, к которым добавляется interval. Date или Date32 или DateTime или DateTime64 или String
  • interval — интервал, который нужно добавить. Interval
Возвращаемое значение Возвращает дату или дату и время, полученные в результате добавления interval к datetime. Date или Date32 или DateTime или DateTime64 Примеры Добавление интервала к дате
Query
SELECT addDate(toDate('2018-01-01'), INTERVAL 3 YEAR)
Response
┌─addDate(toDa⋯valYear(3))─┐
│               2021-01-01 │
└──────────────────────────┘

addDays

Добавленный в: v1.1.0 Добавляет указанное количество дней к дате, дате и времени или строковому представлению даты либо даты и времени. Синтаксис
addDays(datetime, num)
Аргументы
  • datetime — дата или дата и время, к которым нужно добавить указанное количество дней. Date или Date32 или DateTime или DateTime64 или String
  • num — количество дней, которое нужно добавить. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime с добавленными num днями. Date или Date32 или DateTime или DateTime64 Примеры Добавление дней к значениям разных типов даты
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addDays(date, 5) AS add_days_with_date,
    addDays(date_time, 5) AS add_days_with_date_time,
    addDays(date_time_string, 5) AS add_days_with_date_time_string
Response
┌─add_days_with_date─┬─add_days_with_date_time─┬─add_days_with_date_time_string─┐
│         2024-01-06 │     2024-01-06 00:00:00 │        2024-01-06 00:00:00.000 │
└────────────────────┴─────────────────────────┴────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 day)
Response
┌─plus(CAST('1⋯valDay(10))─┐
│               1998-06-26 │
└──────────────────────────┘

addHours

Добавленный в: v1.1.0 Добавляет указанное количество часов к дате, дате и времени или строковому представлению даты или даты и времени. Синтаксис
addHours(datetime, num)
Аргументы
  • datetime — дата или дата и время, к которым нужно добавить указанное количество часов. Date или Date32 или DateTime или DateTime64 или String
  • num — количество часов, которое нужно добавить. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавленными num часами. DateTime или DateTime64(3) Примеры Добавление часов к различным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addHours(date, 12) AS add_hours_with_date,
    addHours(date_time, 12) AS add_hours_with_date_time,
    addHours(date_time_string, 12) AS add_hours_with_date_time_string
Response
┌─add_hours_with_date─┬─add_hours_with_date_time─┬─add_hours_with_date_time_string─┐
│ 2024-01-01 12:00:00 │      2024-01-01 12:00:00 │         2024-01-01 12:00:00.000 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 hour)
Response
┌─plus(CAST('1⋯alHour(10))─┐
│      1998-06-16 10:00:00 │
└──────────────────────────┘

addInterval

Добавленный в: v22.11.0 Добавляет интервал к другому интервалу или кортежу интервалов.
Интервалы одного и того же типа будут объединены в один интервал. Например, если переданы toIntervalDay(1) и toIntervalDay(2), результатом будет (3), а не (1,1).
Синтаксис
addInterval(interval_1, interval_2)
Аргументы
  • interval_1 — Первый интервал или кортеж интервалов. Interval или Tuple(Interval)
  • interval_2 — Второй добавляемый интервал. Interval
Возвращаемое значение Возвращает кортеж интервалов Tuple(Interval) Примеры Добавление интервалов
Query
SELECT addInterval(INTERVAL 1 DAY, INTERVAL 1 MONTH);
SELECT addInterval((INTERVAL 1 DAY, INTERVAL 1 YEAR), INTERVAL 1 MONTH);
SELECT addInterval(INTERVAL 2 DAY, INTERVAL 1 DAY)
Response
┌─addInterval(toIntervalDay(1), toIntervalMonth(1))─┐
│ (1,1)                                             │
└───────────────────────────────────────────────────┘
┌─addInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐
│ (1,1,1)                                                                │
└────────────────────────────────────────────────────────────────────────┘
┌─addInterval(toIntervalDay(2), toIntervalDay(1))─┐
│ (3)                                             │
└─────────────────────────────────────────────────┘

addMicroseconds

Добавленный в: v22.6.0 Добавляет указанное количество микросекунд к значению типа «дата и время» или к дате и времени, представленным в виде строки. Синтаксис
addMicroseconds(datetime, num)
Аргументы
  • datetime — Дата и время, к которым нужно добавить указанное количество микросекунд. DateTime или DateTime64 или String
  • num — Количество добавляемых микросекунд. (U)Int* или Float*
Возвращаемое значение Возвращает date_time, увеличенное на num микросекунд DateTime64 Примеры Добавление микросекунд к различным типам даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addMicroseconds(date_time, 1000000) AS add_microseconds_with_date_time,
    addMicroseconds(date_time_string, 1000000) AS add_microseconds_with_date_time_string
Response
┌─add_microseconds_with_date_time─┬─add_microseconds_with_date_time_string─┐
│      2024-01-01 00:00:01.000000 │             2024-01-01 00:00:01.000000 │
└─────────────────────────────────┴────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 microsecond)
Response
┌─plus(CAST('19⋯osecond(10))─┐
│ 1998-06-16 00:00:00.000010 │
└────────────────────────────┘

addMilliseconds

Добавленный в: v22.6.0 Добавляет указанное количество миллисекунд к значению типа дата и время или к значению даты и времени, представленному в виде строки. Синтаксис
addMilliseconds(datetime, num)
Аргументы
  • datetime — Дата и время, к которым нужно добавить указанное количество миллисекунд. DateTime или DateTime64 или String
  • num — Количество миллисекунд, которое нужно добавить. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавлением num миллисекунд. DateTime64 Примеры Добавление миллисекунд к различным типам даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addMilliseconds(date_time, 1000) AS add_milliseconds_with_date_time,
    addMilliseconds(date_time_string, 1000) AS add_milliseconds_with_date_time_string
Response
┌─add_milliseconds_with_date_time─┬─add_milliseconds_with_date_time_string─┐
│         2024-01-01 00:00:01.000 │                2024-01-01 00:00:01.000 │
└─────────────────────────────────┴────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 millisecond)
Response
┌─plus(CAST('1⋯second(10))─┐
│  1998-06-16 00:00:00.010 │
└──────────────────────────┘

addMinutes

Добавленный в: v1.1.0 Добавляет указанное количество минут к дате, дате и времени или дате либо дате и времени, представленным в виде строки. Синтаксис
addMinutes(datetime, num)
Аргументы
  • datetime — дата или дата и время, к которым добавляется указанное количество минут. Date или Date32 или DateTime или DateTime64 или String
  • num — количество минут для добавления. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавленными num минутами. DateTime или DateTime64(3) Примеры Добавление минут к различным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addMinutes(date, 20) AS add_minutes_with_date,
    addMinutes(date_time, 20) AS add_minutes_with_date_time,
    addMinutes(date_time_string, 20) AS add_minutes_with_date_time_string
Response
┌─add_minutes_with_date─┬─add_minutes_with_date_time─┬─add_minutes_with_date_time_string─┐
│   2024-01-01 00:20:00 │        2024-01-01 00:20:00 │           2024-01-01 00:20:00.000 │
└───────────────────────┴────────────────────────────┴───────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 minute)
Response
┌─plus(CAST('1⋯Minute(10))─┐
│      1998-06-16 00:10:00 │
└──────────────────────────┘

addMonths

Добавленный в: v1.1.0 Добавляет указанное количество месяцев к дате, дате и времени или строковому представлению даты либо даты и времени. Синтаксис
addMonths(datetime, num)
Аргументы
  • datetime — дата или дата и время, к которым добавляется указанное количество месяцев. Date или Date32 или DateTime или DateTime64 или String
  • num — количество добавляемых месяцев. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime плюс num месяцев. Date или Date32 или DateTime или DateTime64 Примеры Добавление месяцев к разным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addMonths(date, 6) AS add_months_with_date,
    addMonths(date_time, 6) AS add_months_with_date_time,
    addMonths(date_time_string, 6) AS add_months_with_date_time_string
Response
┌─add_months_with_date─┬─add_months_with_date_time─┬─add_months_with_date_time_string─┐
│           2024-07-01 │       2024-07-01 00:00:00 │          2024-07-01 00:00:00.000 │
└──────────────────────┴───────────────────────────┴──────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 month)
Response
┌─plus(CAST('1⋯lMonth(10))─┐
│               1999-04-16 │
└──────────────────────────┘

addNanoseconds

Добавленный в: v22.6.0 Добавляет указанное количество наносекунд к значению типа «дата и время» или к дате и времени, заданным строкой. Синтаксис
addNanoseconds(datetime, num)
Аргументы
  • datetime — Дата и время, к которым нужно добавить указанное количество наносекунд. DateTime или DateTime64 или String
  • num — Количество добавляемых наносекунд. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавленными num наносекундами DateTime64 Примеры Добавление наносекунд к различным типам даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addNanoseconds(date_time, 1000) AS add_nanoseconds_with_date_time,
    addNanoseconds(date_time_string, 1000) AS add_nanoseconds_with_date_time_string
Response
┌─add_nanoseconds_with_date_time─┬─add_nanoseconds_with_date_time_string─┐
│  2024-01-01 00:00:00.000001000 │         2024-01-01 00:00:00.000001000 │
└────────────────────────────────┴───────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 1000 nanosecond)
Response
┌─plus(CAST('199⋯osecond(1000))─┐
│ 1998-06-16 00:00:00.000001000 │
└───────────────────────────────┘

addQuarters

Добавленный в: v20.1.0 Добавляет указанное количество кварталов к дате, дате и времени или строковому представлению даты либо даты и времени. Синтаксис
addQuarters(datetime, num)
Аргументы
  • datetime — Дата или дата и время, к которым нужно добавить указанное количество кварталов. Date или Date32 или DateTime или DateTime64 или String
  • num — Количество кварталов, которое нужно добавить. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавленными num кварталами. Date или Date32 или DateTime или DateTime64 Примеры Добавление кварталов к значениям разных типов дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addQuarters(date, 1) AS add_quarters_with_date,
    addQuarters(date_time, 1) AS add_quarters_with_date_time,
    addQuarters(date_time_string, 1) AS add_quarters_with_date_time_string
Response
┌─add_quarters_with_date─┬─add_quarters_with_date_time─┬─add_quarters_with_date_time_string─┐
│             2024-04-01 │         2024-04-01 00:00:00 │            2024-04-01 00:00:00.000 │
└────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 quarter)
Response
┌─plus(CAST('1⋯uarter(10))─┐
│               2000-12-16 │
└──────────────────────────┘

addSeconds

Добавленный в: v1.1.0 Добавляет указанное количество секунд к дате, дате и времени или к строковому представлению даты либо даты и времени. Синтаксис
addSeconds(datetime, num)
Аргументы
  • datetime — Дата или дата и время, к которым добавляется указанное количество секунд. Date или Date32 или DateTime или DateTime64 или String
  • num — Количество добавляемых секунд. (U)Int* или Float*
Возвращаемое значение Возвращает datetime с добавленными num секундами. DateTime или DateTime64(3) Примеры Добавление секунд к различным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addSeconds(date, 30) AS add_seconds_with_date,
    addSeconds(date_time, 30) AS add_seconds_with_date_time,
    addSeconds(date_time_string, 30) AS add_seconds_with_date_time_string
Response
┌─add_seconds_with_date─┬─add_seconds_with_date_time─┬─add_seconds_with_date_time_string─┐
│   2024-01-01 00:00:30 │        2024-01-01 00:00:30 │           2024-01-01 00:00:30.000 │
└───────────────────────┴────────────────────────────┴───────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 second)
Response
┌─dateAdd('1998-06-16'::Date, INTERVAL 10 second)─┐
│                             1998-06-16 00:00:10 │
└─────────────────────────────────────────────────┘

addTupleOfIntervals

Добавленный в: v22.11.0 Последовательно добавляет кортеж интервалов к дате или дате и времени. Синтаксис
addTupleOfIntervals(datetime, intervals)
Аргументы
  • datetime — дата или дата и время, к которым нужно добавить интервалы. Date или Date32 или DateTime или DateTime64
  • intervals — кортеж интервалов, которые нужно добавить к datetime. Tuple(Interval)
Возвращаемое значение Возвращает date с добавленными intervals: Date или Date32 или DateTime или DateTime64 Примеры Добавление кортежа интервалов к дате
Query
WITH toDate('2018-01-01') AS date
SELECT addTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 MONTH, INTERVAL 1 YEAR))
Response
┌─addTupleOfIntervals(date, (toIntervalDay(1), toIntervalMonth(1), toIntervalYear(1)))─┐
│                                                                           2019-02-02 │
└──────────────────────────────────────────────────────────────────────────────────────┘

addWeeks

Добавленный в: v1.1.0 Добавляет указанное количество недель к дате, дате и времени или дате либо дате и времени, представленным в виде строки. Синтаксис
addWeeks(datetime, num)
Аргументы
  • datetime — дата или дата и время, к которым нужно добавить указанное количество недель. Date или Date32 или DateTime или DateTime64 или String
  • num — количество недель, которое нужно добавить. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime с добавленными num неделями. Date или Date32 или DateTime или DateTime64 Примеры Добавление недель к разным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addWeeks(date, 5) AS add_weeks_with_date,
    addWeeks(date_time, 5) AS add_weeks_with_date_time,
    addWeeks(date_time_string, 5) AS add_weeks_with_date_time_string
Response
┌─add_weeks_with_date─┬─add_weeks_with_date_time─┬─add_weeks_with_date_time_string─┐
│          2024-02-05 │      2024-02-05 00:00:00 │         2024-02-05 00:00:00.000 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 week)
Response
┌─plus(CAST('1⋯alWeek(10))─┐
│               1998-08-25 │
└──────────────────────────┘

addYears

Добавленный в: v1.1.0 Добавляет указанное количество лет к дате, дате и времени или строковому представлению даты либо даты и времени. Синтаксис
addYears(datetime, num)
Аргументы
  • datetime — Дата или дата и время, к которым нужно добавить указанное количество лет. Date или Date32 или DateTime или DateTime64 или String
  • num — Количество добавляемых лет. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime с добавленными num годами. Date или Date32 или DateTime или DateTime64 Примеры Добавление лет к различным типам дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    addYears(date, 1) AS add_years_with_date,
    addYears(date_time, 1) AS add_years_with_date_time,
    addYears(date_time_string, 1) AS add_years_with_date_time_string
Response
┌─add_years_with_date─┬─add_years_with_date_time─┬─add_years_with_date_time_string─┐
│          2025-01-01 │      2025-01-01 00:00:00 │         2025-01-01 00:00:00.000 │
└─────────────────────┴──────────────────────────┴─────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 year)
Response
┌─plus(CAST('1⋯alYear(10))─┐
│               2008-06-16 │
└──────────────────────────┘

age

Добавленный в: v23.1.0 Возвращает компонент указанной единицы в разнице между startdate и enddate. Разница вычисляется с точностью до 1 наносекунды. Например, разница между 2021-12-29 и 2022-01-01 составляет 3 дня для единицы day, 0 месяцев для единицы month и 0 лет для единицы year. В качестве альтернативы age см. функцию dateDiff. Синтаксис
age('unit', startdate, enddate[, timezone])
Аргументы
  • unit — Тип интервала результата.
ЕдиницаВозможные значения
nanosecondnanosecond, nanoseconds, ns
microsecondmicrosecond, microseconds, us, u
millisecondmillisecond, milliseconds, ms
secondsecond, seconds, ss, s
minuteminute, minutes, mi, n
hourhour, hours, hh, h
dayday, days, dd, d
weekweek, weeks, wk, ww
monthmonth, months, mm, m
quarterquarter, quarters, qq, q
yearyear, years, yyyy, yy
  • startdate — Первое значение времени для вычитания (вычитаемое). Date или Date32 или DateTime или DateTime64
  • enddate — Второе значение времени, из которого вычитается первое (уменьшаемое). Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Название часового пояса. Если указано, применяется и к startdate, и к enddate. Если не указано, используются часовые пояса startdate и enddate. Если они не совпадают, результат не определён. String
Возвращаемое значение Возвращает разность между enddate и startdate, выраженную в единицах unit. Int32 Примеры Расчёт возраста в часах
Query
SELECT age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))
Response
┌─age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))─┐
│                                                                                24 │
└───────────────────────────────────────────────────────────────────────────────────┘
Расчет возраста в разных единицах
Query
SELECT
    toDate('2022-01-01') AS e,
    toDate('2021-12-29') AS s,
    age('day', s, e) AS day_age,
    age('month', s, e) AS month_age,
    age('year', s, e) AS year_age
Response
┌──────────e─┬──────────s─┬─day_age─┬─month_age─┬─year_age─┐
│ 2022-01-01 │ 2021-12-29 │       3 │         0 │        0 │
└────────────┴────────────┴─────────┴───────────┴──────────┘

changeDay

Добавленный в: v24.7.0 Изменяет компонент дня в значении типа Date или DateTime. Синтаксис
changeDay(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое нужно изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым значением часа. Date или Date32 или DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeDay('2024-01-31'::DateTime, 15)
Response
2024-01-15 00:00:00

changeHour

Добавленный в: v24.7.0 Изменяет компонент часа в значении типа Date или DateTime. Синтаксис
changeHour(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое требуется изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом часа. DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeHour('2024-01-01 12:00:00'::DateTime, 5)
Response
2024-01-01 05:00:00

changeMinute

Добавленный в: v24.7.0 Изменяет компонент минут в значении Date или DateTime. Синтаксис
changeMinute(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое нужно изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым значением минут. DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeMinute('2024-01-01 12:30:00'::DateTime, 45)
Response
2024-01-01 12:45:00

changeMonth

Добавленный в: v24.7.0 Изменяет компонент месяца в значении типа Date или DateTime. Синтаксис
changeMonth(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое требуется изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом месяца. Date или Date32 или DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeMonth('2024-01-01'::DateTime, 12)
Response
2024-12-01 00:00:00

changeSecond

Добавленный в: v24.7.0 Изменяет значение секунд в Date или DateTime. Синтаксис
changeSecond(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое нужно изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым значением секунд. DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeSecond('2024-01-01 12:30:45'::DateTime, 15)
Response
2024-01-01 12:30:15

changeYear

Добавленный в: v24.7.0 Изменяет год у значения типа Date или DateTime. Синтаксис
changeYear(date_or_datetime, value)
Аргументы
  • date_or_datetime — Значение, которое нужно изменить. Date или Date32 или DateTime или DateTime64
  • value — Новое значение. (U)Int*
Возвращаемое значение Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом года. Date или Date32 или DateTime или DateTime64 Примеры Пример использования
Query
SELECT changeYear('2024-01-01'::DateTime, 2023)
Response
2023-01-01 00:00:00

dateDiff

Добавленный в: v23.4.0 Возвращает количество границ указанной единицы unit, пересечённых между startdate и enddate. Разница вычисляется с использованием относительных единиц. Например, разница между 2021-12-29 и 2022-01-01 составляет 3 дня для единицы day (см. toRelativeDayNum), 1 месяц для единицы month (см. toRelativeMonthNum) и 1 год для единицы year (см. toRelativeYearNum). Если указана единица week, то dateDiff считает, что недели начинаются в понедельник. Обратите внимание, что это поведение отличается от функции toWeek(), в которой недели по умолчанию начинаются в воскресенье. В качестве альтернативы dateDiff см. функцию age. Синтаксис
dateDiff(unit, startdate, enddate[, timezone])
Псевдонимы: timestampDiff, TIMESTAMP_DIFF, DATE_DIFF, date_diff, timestamp_diff Аргументы
  • unit — Тип интервала, в котором выражается результат.
UnitВозможные значения
nanosecondnanosecond, nanoseconds, ns
microsecondmicrosecond, microseconds, us, u
millisecondmillisecond, milliseconds, ms
secondsecond, seconds, ss, s
minuteminute, minutes, mi, n
hourhour, hours, hh, h
dayday, days, dd, d
weekweek, weeks, wk, ww
monthmonth, months, mm, m
quarterquarter, quarters, qq, q
yearyear, years, yyyy, yy
  • startdate — Первое значение времени, которое вычитается (вычитаемое). Date или Date32 или DateTime или DateTime64
  • enddate — Второе значение времени, из которого выполняется вычитание (уменьшаемое). Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Имя часового пояса. Если указано, оно применяется и к startdate, и к enddate. Если не указано, используются часовые пояса startdate и enddate. Если они различаются, результат не определён. String
Возвращаемое значение Возвращает разницу между enddate и startdate, выраженную в unit. Int64 Примеры Расчёт разницы между датами в часах
Query
SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res
Response
┌─res─┐
│  25 │
└─────┘
Вычислить разницу между датами в разных единицах
Query
SELECT
    toDate('2022-01-01') AS e,
    toDate('2021-12-29') AS s,
    dateDiff('day', s, e) AS day_diff,
    dateDiff('month', s, e) AS month_diff,
    dateDiff('year', s, e) AS year_diff
Response
┌──────────e─┬──────────s─┬─day_diff─┬─month_diff─┬─year_diff─┐
│ 2022-01-01 │ 2021-12-29 │        3 │          1 │         1 │
└────────────┴────────────┴──────────┴────────────┴───────────┘

dateName

Добавленный в: v21.7.0 Возвращает указанную часть даты. Возможные значения:
  • ‘year’
  • ‘quarter’
  • ‘month’
  • ‘week’
  • ‘dayofyear’
  • ‘day’
  • ‘weekday’
  • ‘hour’
  • ‘minute’
  • ‘second’
Синтаксис
dateName(date_part, date[, timezone])
Аргументы
  • date_part — Часть даты, которую требуется извлечь. String
  • datetime — Значение типа дата или дата и время. Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Часовой пояс. String
Возвращаемое значение Возвращает указанную часть даты. String Примеры Извлечение различных частей даты
Query
WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT
    dateName('year', date_value),
    dateName('month', date_value),
    dateName('day', date_value)
Response
┌─dateName('year', date_value)─┬─dateName('month', date_value)─┬─dateName('day', date_value)─┐
│ 2021                         │ April                         │ 14                          │
└──────────────────────────────┴───────────────────────────────┴─────────────────────────────┘

dateTrunc

Добавленный в: v20.8.0 Обрезает значение даты и времени до указанной части даты. Синтаксис
dateTrunc(unit, datetime[, timezone])
Псевдонимы: DATE_TRUNC Аргументы
  • unit — Тип интервала, до которого нужно усечь результат. Возможные значения: nanosecond (только DateTime64), microsecond (только DateTime64), millisecond (только DateTime64), second, minute, hour, day, week, month, quarter, year. String
  • datetime — Дата и время. Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Имя часового пояса для возвращаемого значения даты и времени. Если не указан, функция использует часовой пояс параметра datetime. String
Возвращаемое значение Возвращает усечённое значение даты и времени.
Аргумент unitАргумент datetimeТип возвращаемого значения
Год, квартал, месяц, неделяDate32 или DateTime64 или Date или DateTimeDate32 или Date
День, час, минута, секундаDate32, DateTime64, Date или DateTimeDateTime64 или DateTime
Миллисекунда, микросекунда,ЛюбойDateTime64
Наносекундасо scale 3, 6 или 9
Примеры Усечение без указания часового пояса
Query
SELECT now(), dateTrunc('hour', now());
Response
┌───────────────now()─┬─dateTrunc('hour', now())──┐
│ 2020-09-28 10:40:45 │       2020-09-28 10:00:00 │
└─────────────────────┴───────────────────────────┘
Усечение с указанием часового пояса
Query
SELECT now(), dateTrunc('hour', now(), 'Asia/Istanbul');
Response
┌───────────────now()─┬─dateTrunc('hour', now(), 'Asia/Istanbul')──┐
│ 2020-09-28 10:46:26 │                        2020-09-28 13:00:00 │
└─────────────────────┴────────────────────────────────────────────┘

formatDateTime

Добавленный в: v1.1.0 Форматирует дату или дату и время в соответствии с заданной строкой формата. format — константное выражение, поэтому для одного результирующего столбца нельзя использовать несколько форматов. formatDateTime использует стиль форматирования даты и времени MySQL, см. документацию MySQL. Обратная операция для этой функции — parseDateTime. С помощью полей замены можно задать шаблон результирующей строки. Столбец примера в таблице ниже показывает результат форматирования для 2018-01-02 22:33:44. Поля замены:
PlaceholderDescriptionExample
%aсокращённое название дня недели (Mon-Sun)Mon
%bсокращённое название месяца (Jan-Dec)Jan
%cмесяц в виде целого числа (01-12)01
%Cгод, разделённый на 100 и усечённый до целого числа (00-99)20
%dдень месяца с ведущим нулём (01-31)02
%Dкраткая дата в формате MM/DD/YY, эквивалентно %m/%d/%y01/02/18
%eдень месяца с дополнением пробелом (1-31)2
%fдробная часть секунды123456
%Fкраткая дата в формате YYYY-MM-DD, эквивалентно %Y-%m-%d2018-01-02
%gдвузначный год по ISO 860118
%Gчетырёхзначный год для номера недели по ISO2018
%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)14
%lчас в 12-часовом формате (01-12)09
%mмесяц в виде целого числа (01-12)01
%Mполное название месяца (January-December)January
%nсимвол новой строки
%pобозначение AM или PMPM
%Qквартал (1-4)1
%rвремя в 12-часовом формате HH:MM AM/PM, эквивалентно %h:%i %p10:30 PM
%Rвремя в 24-часовом формате HH:MM, эквивалентно %H:%i22:33
%sсекунды (00-59)44
%Sсекунды (00-59)44
%tсимвол горизонтальной табуляции
%Tвремя в формате ISO 8601 (HH:MM:SS), эквивалентно %H:%i:%S22:33:44
%uдень недели по ISO 8601 в виде числа, где понедельник = 1 (1-7)2
%Vномер недели по ISO 8601 (01-53)01
%wдень недели в виде целого числа, где воскресенье = 0 (0-6)2
%Wполное название дня недели (Monday-Sunday)Monday
%yгод, последние две цифры (00-99)18
%Yгод2018
%zсмещение относительно UTC в формате +HHMM или -HHMM-0500
%%знак %%
  • В версиях ClickHouse до v23.4 %f выводит один ноль (0), если форматируемое значение имеет тип Date, Date32 или DateTime (у которых нет дробной части секунд) либо DateTime64 с точностью 0.
  • В версиях ClickHouse до v25.1 %f выводит столько цифр, сколько указано в scale типа DateTime64, вместо фиксированных 6 цифр.
  • В версиях ClickHouse до v23.4 %M выводит минуты (00-59) вместо полного названия месяца (January-December).
Синтаксис
formatDateTime(datetime, format[, timezone])
Псевдонимы: DATE_FORMAT Аргументы
  • datetime — Значение Date или DateTime для форматирования. Date or Date32 or DateTime or DateTime64
  • format — Строка формата с полями подстановки. String
  • timezone — Необязательно. Имя часового пояса для форматируемого времени. String
Возвращаемое значение Возвращает значение даты и времени в указанном формате. String Примеры Форматирование даты с плейсхолдером года
Query
SELECT formatDateTime(toDate('2010-01-04'), '%g')
Response
┌─formatDateTime(toDate('2010-01-04'), '%g')─┐
│ 10                                         │
└────────────────────────────────────────────┘
Форматирование DateTime64 с долями секунды
Query
SELECT formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')
Response
┌─formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')─┐
│ 1234560                                                             │
└─────────────────────────────────────────────────────────────────────┘
Формат с часовым поясом
Query
SELECT
    now() AS ts,
    time_zone,
    formatDateTime(ts, '%T', time_zone) AS str_tz_time
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10
Response
┌──────────────────ts─┬─time_zone─────────┬─str_tz_time─┐
│ 2023-09-08 19:13:40 │ Europe/Amsterdam  │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Andorra    │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Astrakhan  │ 23:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Athens     │ 22:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Belfast    │ 20:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Belgrade   │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Berlin     │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Bratislava │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Brussels   │ 21:13:40    │
│ 2023-09-08 19:13:40 │ Europe/Bucharest  │ 22:13:40    │
└─────────────────────┴───────────────────┴─────────────┘

formatDateTimeInJodaSyntax

Добавленный в: v20.1.0 Похожа на formatDateTime, но форматирует дату и время в стиле Joda, а не MySQL. См. документацию Joda Time. Обратной операцией для этой функции является parseDateTimeInJodaSyntax. С помощью полей замены можно задать шаблон результирующей строки. Поля замены:
ЗаполнительОписаниеПредставлениеПримеры
GэратекстAD
Cвек эры (>=0)число20
Yгод эры (>=0)год1996
xгод нумерации недель (пока не поддерживается)год1996
wнеделя года нумерации недель (пока не поддерживается)число27
eдень неделичисло2
Eдень неделитекстTuesday; Tue
yгодгод1996
Dдень годачисло189
Mмесяц годамесяцJuly; Jul; 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часовой поястекстEastern Standard Time; EST
Zсмещение часового поясазона-0800; -0812
экранирование текстаразделитель
одинарная кавычкалитерал
Синтаксис
formatDateTimeInJodaSyntax(datetime, format[, timezone])
Аргументы
  • datetime — Date или DateTime для форматирования. DateTime или Date или Date32 или DateTime64
  • format — Строка формата с полями замены в стиле Joda. String
  • timezone — Необязательно. Имя часового пояса для форматируемых даты и времени. String
Возвращаемое значение Возвращает значения даты и времени в соответствии с указанным форматом. String Примеры Форматирование datetime с помощью синтаксиса Joda
Query
SELECT formatDateTimeInJodaSyntax(toDateTime('2010-01-04 12:34:56'), 'yyyy-MM-dd HH:mm:ss')
Response
┌─formatDateTimeInJodaSyntax(toDateTime('2010-01-04 12:34:56'), 'yyyy-MM-dd HH:mm:ss')─┐
│ 2010-01-04 12:34:56                                                                     │
└─────────────────────────────────────────────────────────────────────────────────────────┘

fromDaysSinceYearZero

Добавленный в: v23.11.0 Для заданного числа дней, прошедших с 1 January 0000, возвращает соответствующую дату в пролептическом григорианском календаре по ISO 8601. Вычисление выполняется так же, как в функции MySQL FROM_DAYS(). Результат не определён, если его нельзя представить в пределах типа Date. Синтаксис
fromDaysSinceYearZero(days)
Псевдонимы: FROM_DAYS Аргументы
  • days — Количество дней, прошедших с нулевого года. UInt32
Возвращаемое значение Возвращает дату, соответствующую числу дней, прошедших с нулевого года. Date Примеры Преобразование числа дней с нулевого года в даты
Query
SELECT
fromDaysSinceYearZero(739136) AS date1,
fromDaysSinceYearZero(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2
Response
┌──────date1─┬──────date2─┐
│ 2023-09-08 │ 2023-09-08 │
└────────────┴────────────┘

fromDaysSinceYearZero32

Добавленный в: v23.11.0 Для заданного числа дней, прошедших с 1 January 0000, возвращает соответствующую дату в пролептическом григорианском календаре по ISO 8601. Вычисление выполняется так же, как в функции MySQL FROM_DAYS(). Результат не определён, если его нельзя представить в пределах типа Date32. Синтаксис
fromDaysSinceYearZero32(days)
Аргументы
  • days — Количество дней, прошедших с начала нулевого года. UInt32
Возвращаемое значение Возвращает дату, соответствующую числу дней, прошедших с начала нулевого года. Date32 Примеры Преобразование дней с начала нулевого года в даты
Query
SELECT
fromDaysSinceYearZero32(739136) AS date1,
fromDaysSinceYearZero32(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2
Response
┌──────date1─┬──────date2─┐
│ 2023-09-08 │ 2023-09-08 │
└────────────┴────────────┘

fromModifiedJulianDay

Добавленный в: v21.1.0 Преобразует число модифицированного юлианского дня в дату пролептического григорианского календаря в текстовом формате YYYY-MM-DD. Функция поддерживает номера дней от -678941 до 2973483 (что соответствует датам 0000-01-01 и 9999-12-31 соответственно). Если номер дня выходит за пределы поддерживаемого диапазона, генерируется исключение. Синтаксис
fromModifiedJulianDay(day)
Аргументы
  • day — номер модифицированного юлианского дня. (U)Int*
Возвращаемое значение Возвращает дату в текстовом виде. String Примеры Преобразование модифицированного юлианского дня в дату
Query
SELECT fromModifiedJulianDay(58849)
Response
┌─fromModifiedJulianDay(58849)─┐
│ 2020-01-01                   │
└──────────────────────────────┘

fromModifiedJulianDayOrNull

Добавленный в: v21.1.0 Аналогично fromModifiedJulianDay(), но вместо вызова исключения возвращает NULL. Синтаксис
fromModifiedJulianDayOrNull(day)
Аргументы
  • day — номер модифицированного юлианского дня. (U)Int*
Возвращаемое значение Возвращает дату в текстовом виде для корректного аргумента day, в противном случае — null. Nullable(String) Примеры Преобразование модифицированного юлианского дня в дату с обработкой null
Query
SELECT fromModifiedJulianDayOrNull(58849);
SELECT fromModifiedJulianDayOrNull(60000000); -- некорректный аргумент, возвращает NULL
Response
┌─fromModified⋯Null(58849)─┐
│ 2020-01-01               │
└──────────────────────────┘
┌─fromModified⋯l(60000000)─┐
│ ᴺᵁᴸᴸ                     │
└──────────────────────────┘

fromUTCTimestamp

Добавленный в: v22.1.0 Преобразует значение типа дата или дата и время из часового пояса UTC в значение типа дата или дата и время в указанном часовом поясе. Эта функция в основном предназначена для совместимости с Apache Spark и аналогичными фреймворками. Синтаксис
fromUTCTimestamp(datetime, time_zone)
Псевдонимы: from_utc_timestamp Аргументы
  • datetime — Константное значение даты или даты и времени либо выражение. DateTime или DateTime64
  • time_zone — Константное значение типа String или выражение, задающее часовой пояс. String
Возвращаемое значение Возвращает DateTime/DateTime64 в указанном часовом поясе. DateTime или DateTime64 Примеры Преобразование времени из часового пояса UTC в указанный часовой пояс
Query
SELECT fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00', 3), 'Asia/Shanghai')
Response
┌─fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00',3), 'Asia/Shanghai')─┐
│                                                 2023-03-16 18:00:00.000 │
└─────────────────────────────────────────────────────────────────────────┘

fromUnixTimestamp

Добавленный в: v20.8.0 Эта функция преобразует Unix-временную метку в календарную дату и время суток. Ее можно вызвать двумя способами:
  • Если передан один аргумент типа Integer, функция возвращает значение типа DateTime, то есть ведет себя как toDateTime.
  • Если переданы два или три аргумента, где первый аргумент — значение типа Integer, Date, Date32, DateTime или DateTime64, второй аргумент — константная строка формата, а третий аргумент — необязательная константная строка часового пояса, функция возвращает значение типа String, то есть ведет себя как formatDateTime. В этом случае используется стиль форматирования datetime из MySQL.
Синтаксис
fromUnixTimestamp(timestamp)
fromUnixTimestamp(timestamp[, format[, timezone]])
Псевдонимы: FROM_UNIXTIME Аргументы
  • timestamp — Unix-временная метка или значение типа date/дата и время. (U)Int* или Date или Date32 или DateTime или DateTime64
  • format — Необязательно. Константная строка формата для форматирования вывода. String
  • timezone — Необязательно. Константная строка часового пояса. String
Возвращаемое значение Возвращает DateTime, если вызвана с одним аргументом, или String, если вызвана с двумя или тремя аргументами. DateTime или String Примеры Преобразование Unix-временной метки в DateTime
Query
SELECT fromUnixTimestamp(423543535)
Response
┌─fromUnixTimestamp(423543535)─┐
│          1983-06-04 10:58:55 │
└──────────────────────────────┘
Преобразование Unix-временной метки с указанием формата
Query
SELECT fromUnixTimestamp(1234334543, '%Y-%m-%d %R:%S') AS DateTime
Response
┌─DateTime────────────┐
│ 2009-02-11 14:42:23 │
└─────────────────────┘

fromUnixTimestampInJodaSyntax

Добавленный в: v23.1.0 Эта функция преобразует Unix-временную метку в календарную дату и время суток. Её можно вызвать двумя способами: Если передан один аргумент типа Integer, функция возвращает значение типа DateTime, то есть ведёт себя как toDateTime. Если переданы два или три аргумента, где первый аргумент — значение типа Integer, Date, Date32, DateTime или DateTime64, второй аргумент — константная строка формата, а третий — необязательная константная строка с часовым поясом, функция возвращает значение типа String, то есть ведёт себя как formatDateTimeInJodaSyntax. В этом случае используется стиль форматирования даты и времени Joda. Синтаксис
fromUnixTimestampInJodaSyntax(timestamp)
fromUnixTimestampInJodaSyntax(timestamp, format[, timezone])
Аргументы
  • timestamp — Unix-временная метка или значение даты и времени. (U)Int* или Date или Date32 или DateTime или DateTime64
  • format — Необязательно. Константная строка формата в синтаксисе Joda для форматирования вывода. String
  • timezone — Необязательно. Константная строка часового пояса. String
Возвращаемое значение Возвращает дату и время при вызове с одним аргументом или строку при вызове с двумя или тремя аргументами.} DateTime или String Примеры Преобразование Unix-временной метки в формате Joda
Query
SELECT fromUnixTimestampInJodaSyntax(1234334543, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS DateTime
Response
┌─DateTime────────────┐
│ 2009-02-11 06:42:23 │
└─────────────────────┘

makeDate

Добавленный в: v22.6.0 Создаёт Date на основе:
  • года, месяца и дня
  • года и порядкового дня в году
Синтаксис
makeDate(year, month, day)
makeDate(year, day_of_year)
Аргументы Возвращаемое значение Возвращает значение типа Date, сформированное из указанных аргументов Date Примеры Date из года, месяца и дня
Query
SELECT makeDate(2023, 2, 28) AS date;
Response
┌───────date─┐
│ 2023-02-28 │
└────────────┘
Дата по году и дню года
Query
SELECT makeDate(2023, 42) AS date;
Response
┌───────date─┐
│ 2023-02-11 │
└────────────┘

makeDate32

Добавленный в: v22.6.0 Создаёт Date32, используя:
  • год, месяц и день
  • год и день года
Синтаксис
makeDate32(year, month, day)
makeDate32(year, day_of_year)
Аргументы Возвращаемое значение Возвращает значение Date32, созданное на основе переданных аргументов Date32 Примеры Date32 из года, месяца и дня
Query
SELECT makeDate(2023, 2, 28) AS date;
Response
┌───────date─┐
│ 2023-02-28 │
└────────────┘
Date32 из года и номера дня в году
Query
SELECT makeDate(2023, 42) AS date;
Response
┌───────date─┐
│ 2023-02-11 │
└────────────┘

makeDateTime

Добавленный в: v22.6.0 Создаёт значение DateTime из года, месяца, дня, часа, минуты и секунды с необязательным часовым поясом. Синтаксис
makeDateTime(year, month, day, hour, minute, second[, timezone])
Аргументы Возвращаемое значение Возвращает значение DateTime, сформированное из указанных аргументов DateTime Примеры DateTime из года, месяца, дня, часа, минуты и секунды
Query
SELECT makeDateTime(2023, 2, 28, 17, 12, 33) AS DateTime;
Response
┌────────────DateTime─┐
│ 2023-02-28 17:12:33 │
└─────────────────────┘

makeDateTime64

Добавленный в: v22.6.0 Создаёт DateTime64 из года, месяца, дня, часа, минуты и секунды с необязательной дробной частью, точностью и часовым поясом. Синтаксис
makeDateTime64(year, month, day, hour, minute, second[, fraction[, precision[, timezone]]])
Аргументы Возвращаемое значение Возвращает значение DateTime64, сформированное из указанных аргументов DateTime64 Примеры DateTime64 из года, месяца, дня, часа, минуты, секунды
Query
SELECT makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5);
Response
┌─makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5)─┐
│                       2023-05-15 10:30:45.00779 │
└─────────────────────────────────────────────────┘

monthName

Добавленный в: v22.1.0 Возвращает название месяца в виде строки из значения типа «дата» или «дата и время». Синтаксис
monthName(datetime)
Аргументы Возвращаемое значение Возвращает название месяца. String Примеры Получить название месяца из даты
Query
WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT monthName(date_value)
Response
┌─monthName(date_value)─┐
│ April                 │
└───────────────────────┘

now

Добавленный в: v1.1.0 Возвращает текущие дату и время на момент анализа запроса. Эта функция является константным выражением. Синтаксис
now([timezone])
Псевдонимы: current_timestamp Аргументы
  • timezone — Необязательный. Имя часового пояса для возвращаемого значения. String
Возвращаемое значение Возвращает текущие дату и время. DateTime Примеры Запрос без указания часового пояса
Query
SELECT now()
Response
┌───────────────now()─┐
│ 2020-10-17 07:42:09 │
└─────────────────────┘
Запрос с указанным часовым поясом
Query
SELECT now('Asia/Istanbul')
Response
┌─now('Asia/Istanbul')─┐
│  2020-10-17 10:42:23 │
└──────────────────────┘
Стандартный синтаксис SQL без скобок
Query
SELECT NOW, CURRENT_TIMESTAMP
Response
┌─────────────────NOW─┬───CURRENT_TIMESTAMP─┐
│ 2020-10-17 07:42:19 │ 2020-10-17 07:42:19 │
└─────────────────────┴─────────────────────┘

now64

Добавленный в: v20.1.0 Возвращает текущие дату и время с точностью до долей секунды в момент анализа запроса. Функция является константным выражением. Синтаксис
now64([scale[, timezone]])
Аргументы
  • scale — Необязательный. Размер шага (точность): 10^-precision секунды. Допустимый диапазон: [0 : 9]. Обычно используются значения 3 (по умолчанию) — миллисекунды, 6 — микросекунды, 9 — наносекунды. UInt8
  • timezone — Необязательный. Название часового пояса для возвращаемого значения. String
Возвращаемое значение Возвращает текущие дату и время с точностью до долей секунды. DateTime64 Примеры Запрос со стандартной и пользовательской точностью
Query
SELECT now64(), now64(9, 'Asia/Istanbul')
Response
┌─────────────────now64()─┬─────now64(9, 'Asia/Istanbul')─┐
│ 2022-08-21 19:34:26.196 │ 2022-08-21 22:34:26.196542766 │
└─────────────────────────┴───────────────────────────────┘

nowInBlock

Добавленный в: v22.8.0 Возвращает текущие дату и время на момент обработки каждого блока данных. В отличие от функции now, это не константное выражение, и при длительном выполнении запроса возвращаемое значение будет различаться в разных блоках. Эту функцию имеет смысл использовать для генерации текущего времени в длительно выполняющихся запросах INSERT SELECT. Синтаксис
nowInBlock([timezone])
Аргументы
  • timezone — Необязательный параметр. Имя часового пояса для возвращаемого значения. String
Возвращаемое значение Возвращает текущие дату и время на момент обработки каждого блока данных. DateTime Примеры Отличие от функции now()
Query
SELECT
    now(),
    nowInBlock(),
    sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock
Response
┌───────────────now()─┬────────nowInBlock()─┬─sleep(1)─┐
│ 2022-08-21 19:41:19 │ 2022-08-21 19:41:19 │        0 │
│ 2022-08-21 19:41:19 │ 2022-08-21 19:41:20 │        0 │
│ 2022-08-21 19:41:19 │ 2022-08-21 19:41:21 │        0 │
└─────────────────────┴─────────────────────┴──────────┘

nowInBlock64

Добавленный в: v25.8.0 Возвращает текущие дату и время в миллисекундах на момент обработки каждого блока данных. В отличие от функции now64, это не константное выражение, и при длительно выполняющихся запросах возвращаемое значение будет различаться в разных блоках. Эту функцию имеет смысл использовать для генерации текущего времени в длительно выполняющихся запросах INSERT SELECT. Синтаксис
nowInBlock64([scale[, timezone]])
Аргументы
  • scale — Необязательный. Размер шага (precision): 10^-precision секунды. Допустимый диапазон: [0 : 9]. Обычно используются значения 3 (по умолчанию) (миллисекунды), 6 (микросекунды), 9 (наносекунды). UInt8
  • timezone — Необязательный. Имя часового пояса для возвращаемого значения. String
Возвращаемое значение Возвращает текущие дату и время на момент обработки каждого блока данных с точностью до долей секунды. DateTime64 Примеры Отличие от функции now64()
Query
SELECT
    now64(),
    nowInBlock64(),
    sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock
Response
┌─────────────────now64()─┬──────────nowInBlock64()─┬─sleep(1)─┐
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:29.534 │        0 │
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:30.535 │        0 │
│ 2025-07-29 17:07:29.526 │ 2025-07-29 17:07:31.535 │        0 │
└─────────────────────────┴─────────────────────────┴──────────┘

serverTimezone

Добавленный в: v23.6.0 Возвращает часовой пояс сервера, то есть значение настройки timezone. Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента. В противном случае она возвращает константное значение. Синтаксис
serverTimezone()
Псевдонимы: serverTimeZone Аргументы
  • Нет.
Возвращаемое значение Возвращает часовой пояс сервера в виде String Примеры Пример использования
Query
SELECT serverTimeZone()
Response
┌─serverTimeZone()─┐
│ UTC              │
└──────────────────┘

subDate

Добавленный в: v23.9.0 Вычитает интервал времени из указанной даты, даты и времени или даты либо даты и времени в строковом формате. Если в результате вычитания получается значение, выходящее за пределы типа данных, результат не определён. Синтаксис
subDate(datetime, interval)
Аргументы
  • datetime — Дата или дата и время, из которого вычитается interval. Date or Date32 or DateTime or DateTime64
  • interval — Интервал, который нужно вычесть. Interval
Возвращаемое значение Возвращает дату или дату и время, полученные в результате вычитания interval из datetime. Date or Date32 or DateTime or DateTime64 Примеры Вычитание интервала из даты
Query
SELECT subDate(toDate('2018-01-01'), INTERVAL 3 YEAR)
Response
┌─subDate(toDate('2018-01-01'), toIntervalYear(3))─┐
│                                       2015-01-01 │
└──────────────────────────────────────────────────┘

subtractDays

Добавленный в: v1.1.0 Вычитает указанное количество дней из даты, даты и времени или даты либо даты и времени в строковом формате. Синтаксис
subtractDays(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых вычитается указанное количество дней. Date или Date32 или DateTime или DateTime64 или String
  • num — количество дней, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime за вычетом num дней Date или Date32 или DateTime или DateTime64 Примеры Вычитание дней из значений разных типов даты
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractDays(date, 31) AS subtract_days_with_date,
    subtractDays(date_time, 31) AS subtract_days_with_date_time,
    subtractDays(date_time_string, 31) AS subtract_days_with_date_time_string
Response
┌─subtract_days_with_date─┬─subtract_days_with_date_time─┬─subtract_days_with_date_time_string─┐
│              2023-12-01 │          2023-12-01 00:00:00 │             2023-12-01 00:00:00.000 │
└─────────────────────────┴──────────────────────────────┴─────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 day)
Response
┌─minus(CAST('⋯valDay(10))─┐
│               1998-06-06 │
└──────────────────────────┘

subtractHours

Добавленный в: v1.1.0 Вычитает указанное количество часов из даты, даты и времени или даты либо даты и времени в строковом формате. Синтаксис
subtractHours(datetime, num)
Аргументы
  • datetime — Дата или дата и время, из которой нужно вычесть указанное количество часов. Date или Date32 или DateTime или DateTime64 или String
  • num — Количество часов, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime за вычетом num часов: DateTime или DateTime64(3) Примеры Вычитание часов из значений разных типов даты
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractHours(date, 12) AS subtract_hours_with_date,
    subtractHours(date_time, 12) AS subtract_hours_with_date_time,
    subtractHours(date_time_string, 12) AS subtract_hours_with_date_time_string
Response
┌─subtract_hours_with_date─┬─subtract_hours_with_date_time─┬─subtract_hours_with_date_time_string─┐
│      2023-12-31 12:00:00 │           2023-12-31 12:00:00 │              2023-12-31 12:00:00.000 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 hour)
Response
┌─minus(CAST('⋯alHour(10))─┐
│      1998-06-15 14:00:00 │
└──────────────────────────┘

subtractInterval

Добавленный в: v22.11.0 Добавляет отрицательный интервал к другому интервалу или кортежу интервалов. Примечание: интервалы одного и того же типа объединяются в один интервал. Например, если переданы toIntervalDay(2) и toIntervalDay(1), то результатом будет (1), а не (2,1). Синтаксис
subtractInterval(interval_1, interval_2)
Аргументы
  • interval_1 — Первый интервал или кортеж интервалов. Interval или Tuple(Interval)
  • interval_2 — Второй интервал с противоположным знаком. Interval
Возвращаемое значение Возвращает кортеж интервалов Tuple(T) Примеры Вычитание интервалов
Query
SELECT subtractInterval(INTERVAL 1 DAY, INTERVAL 1 MONTH);
SELECT subtractInterval((INTERVAL 1 DAY, INTERVAL 1 YEAR), INTERVAL 1 MONTH);
SELECT subtractInterval(INTERVAL 2 DAY, INTERVAL 1 DAY);
Response
┌─subtractInterval(toIntervalDay(1), toIntervalMonth(1))─┐
│ (1,-1)                                                 │
└────────────────────────────────────────────────────────┘
┌─subtractInterval((toIntervalDay(1), toIntervalYear(1)), toIntervalMonth(1))─┐
│ (1,1,-1)                                                                    │
└─────────────────────────────────────────────────────────────────────────────┘
┌─subtractInterval(toIntervalDay(2), toIntervalDay(1))─┐
│ (1)                                                  │
└──────────────────────────────────────────────────────┘

subtractMicroseconds

Добавленный в: v22.6.0 Вычитает указанное количество микросекунд из значения типа дата и время или из даты и времени, представленных в виде строки. Синтаксис
subtractMicroseconds(datetime, num)
Аргументы
  • datetime — Значение даты и времени, из которого нужно вычесть указанное количество микросекунд. DateTime или DateTime64 или String
  • num — Количество микросекунд, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime за вычетом num микросекунд. DateTime64 Примеры Вычитание микросекунд из значений разных типов даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractMicroseconds(date_time, 1000000) AS subtract_microseconds_with_date_time,
    subtractMicroseconds(date_time_string, 1000000) AS subtract_microseconds_with_date_time_string
Response
┌─subtract_microseconds_with_date_time─┬─subtract_microseconds_with_date_time_string─┐
│           2023-12-31 23:59:59.000000 │                  2023-12-31 23:59:59.000000 │
└──────────────────────────────────────┴─────────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 microsecond)
Response
┌─minus(CAST('1⋯osecond(10))─┐
│ 1998-06-15 23:59:59.999990 │
└────────────────────────────┘

subtractMilliseconds

Добавленный в: v22.6.0 Вычитает указанное количество миллисекунд из значения типа «дата и время» или из даты и времени, представленных в виде строки. Синтаксис
subtractMilliseconds(datetime, num)
Аргументы
  • datetime — Дата и время, из которых нужно вычесть указанное количество миллисекунд. DateTime или DateTime64, либо String
  • num — Количество миллисекунд для вычитания. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime за вычетом num миллисекунд. DateTime64 Примеры Вычитание миллисекунд из различных типов даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractMilliseconds(date_time, 1000) AS subtract_milliseconds_with_date_time,
    subtractMilliseconds(date_time_string, 1000) AS subtract_milliseconds_with_date_time_string
Response
┌─subtract_milliseconds_with_date_time─┬─subtract_milliseconds_with_date_time_string─┐
│              2023-12-31 23:59:59.000 │                     2023-12-31 23:59:59.000 │
└──────────────────────────────────────┴─────────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 millisecond)
Response
┌─minus(CAST('⋯second(10))─┐
│  1998-06-15 23:59:59.990 │
└──────────────────────────┘

subtractMinutes

Добавленный в: v1.1.0 Вычитает указанное количество минут из даты, даты и времени или из строки, представляющей дату либо дату и время. Синтаксис
subtractMinutes(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых нужно вычесть указанное количество минут. Date или Date32 или DateTime или DateTime64 или String
  • num — количество минут, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает значение datetime за вычетом num минут. DateTime или DateTime64(3) Примеры Вычитание минут из значений разных типов даты
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractMinutes(date, 30) AS subtract_minutes_with_date,
    subtractMinutes(date_time, 30) AS subtract_minutes_with_date_time,
    subtractMinutes(date_time_string, 30) AS subtract_minutes_with_date_time_string
Response
┌─subtract_minutes_with_date─┬─subtract_minutes_with_date_time─┬─subtract_minutes_with_date_time_string─┐
│        2023-12-31 23:30:00 │             2023-12-31 23:30:00 │                2023-12-31 23:30:00.000 │
└────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 minute)
Response
┌─minus(CAST('⋯Minute(10))─┐
│      1998-06-15 23:50:00 │
└──────────────────────────┘

subtractMonths

Добавленный в: v1.1.0 Вычитает указанное количество месяцев из даты, даты и времени или строки с датой либо датой и временем. Синтаксис
subtractMonths(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых нужно вычесть указанное количество месяцев. Date или Date32 или DateTime или DateTime64 или String
  • num — количество месяцев, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime минус num месяцев. Date или Date32 или DateTime или DateTime64 Примеры Вычитание месяцев из различных типов дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractMonths(date, 1) AS subtract_months_with_date,
    subtractMonths(date_time, 1) AS subtract_months_with_date_time,
    subtractMonths(date_time_string, 1) AS subtract_months_with_date_time_string
Response
┌─subtract_months_with_date─┬─subtract_months_with_date_time─┬─subtract_months_with_date_time_string─┐
│                2023-12-01 │            2023-12-01 00:00:00 │               2023-12-01 00:00:00.000 │
└───────────────────────────┴────────────────────────────────┴───────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 month)
Response
┌─minus(CAST('⋯lMonth(10))─┐
│               1997-08-16 │
└──────────────────────────┘

subtractNanoseconds

Добавленный в: v20.1.0 Вычитает указанное количество наносекунд из значения типа «дата и время» или из даты и времени, представленных в виде строки. Синтаксис
subtractNanoseconds(datetime, num)
Аргументы
  • datetime — дата и время, из которых нужно вычесть указанное количество наносекунд. DateTime или DateTime64, или String
  • num — количество наносекунд, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime за вычетом num наносекунд. DateTime64 Примеры Вычитание наносекунд из значений разных типов даты и времени
Query
WITH
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractNanoseconds(date_time, 1000) AS subtract_nanoseconds_with_date_time,
    subtractNanoseconds(date_time_string, 1000) AS subtract_nanoseconds_with_date_time_string
Response
┌─subtract_nanoseconds_with_date_time─┬─subtract_nanoseconds_with_date_time_string─┐
│       2023-12-31 23:59:59.999999000 │              2023-12-31 23:59:59.999999000 │
└─────────────────────────────────────┴────────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 nanosecond)
Response
┌─minus(CAST('19⋯anosecond(10))─┐
│ 1998-06-15 23:59:59.999999990 │
└───────────────────────────────┘

subtractQuarters

Добавленный в: v20.1.0 Вычитает указанное количество кварталов из даты, даты и времени или даты либо даты и времени, представленных в виде строки. Синтаксис
subtractQuarters(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых нужно вычесть указанное количество кварталов. Date or Date32 or DateTime or DateTime64 or String
  • num — количество кварталов, которое нужно вычесть. (U)Int* or Float*
Возвращаемое значение Возвращает значение datetime за вычетом num кварталов Date or Date32 or DateTime or DateTime64 Примеры Вычитание кварталов для разных типов дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractQuarters(date, 1) AS subtract_quarters_with_date,
    subtractQuarters(date_time, 1) AS subtract_quarters_with_date_time,
    subtractQuarters(date_time_string, 1) AS subtract_quarters_with_date_time_string
Response
┌─subtract_quarters_with_date─┬─subtract_quarters_with_date_time─┬─subtract_quarters_with_date_time_string─┐
│                  2023-10-01 │              2023-10-01 00:00:00 │                 2023-10-01 00:00:00.000 │
└─────────────────────────────┴──────────────────────────────────┴─────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 quarter)
Response
┌─minus(CAST('1⋯Quarter(10))─┐
│                1996-09-16 │
└───────────────────────────┘

subtractSeconds

Добавленный в: v1.1.0 Вычитает указанное количество секунд из даты, даты и времени или даты либо даты и времени, представленных в виде строки. Синтаксис
subtractSeconds(datetime, num)
Аргументы
  • datetime — Дата или дата и время, из которых вычитается указанное количество секунд. Date или Date32 или DateTime или DateTime64 или String
  • num — Количество секунд, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime за вычетом num секунд. DateTime или DateTime64(3) Примеры Вычитание секунд из различных типов дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractSeconds(date, 60) AS subtract_seconds_with_date,
    subtractSeconds(date_time, 60) AS subtract_seconds_with_date_time,
    subtractSeconds(date_time_string, 60) AS subtract_seconds_with_date_time_string
Response
┌─subtract_seconds_with_date─┬─subtract_seconds_with_date_time─┬─subtract_seconds_with_date_time_string─┐
│        2023-12-31 23:59:00 │             2023-12-31 23:59:00 │                2023-12-31 23:59:00.000 │
└────────────────────────────┴─────────────────────────────────┴────────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 second)
Response
┌─minus(CAST('⋯Second(10))─┐
│      1998-06-15 23:59:50 │
└──────────────────────────┘

subtractTupleOfIntervals

Добавленный в: v22.11.0 Последовательно вычитает кортеж интервалов из даты или даты и времени. Синтаксис
subtractTupleOfIntervals(datetime, intervals)
Аргументы
  • datetime — Дата или дата и время, из которых нужно вычесть интервалы. Date или Date32 или DateTime или DateTime64
  • intervals — Кортеж интервалов, которые нужно вычесть из datetime. Tuple(Interval)
Возвращаемое значение Возвращает date, из которого вычтены intervals: Date или Date32 или DateTime или DateTime64 Примеры Вычитание кортежа интервалов из даты
Query
WITH toDate('2018-01-01') AS date SELECT subtractTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 YEAR))
Response
┌─subtractTupl⋯alYear(1)))─┐
│               2016-12-31 │
└──────────────────────────┘

subtractWeeks

Добавленный в: v1.1.0 Вычитает указанное количество недель из даты, даты и времени или даты/даты и времени, представленных в виде строки. Синтаксис
subtractWeeks(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых нужно вычесть указанное количество недель. Date или Date32 или DateTime или DateTime64 или String
  • num — количество недель, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime минус num недель. Date или Date32 или DateTime или DateTime64 Примеры Вычитание недель из значений разных типов даты
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractWeeks(date, 1) AS subtract_weeks_with_date,
    subtractWeeks(date_time, 1) AS subtract_weeks_with_date_time,
    subtractWeeks(date_time_string, 1) AS subtract_weeks_with_date_time_string
Response
┌─subtract_weeks_with_date─┬─subtract_weeks_with_date_time─┬─subtract_weeks_with_date_time_string─┐
│               2023-12-25 │           2023-12-25 00:00:00 │              2023-12-25 00:00:00.000 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 week)
Response
┌─minus(CAST('⋯alWeek(10))─┐
│               1998-04-07 │
└──────────────────────────┘

subtractYears

Добавленный в: v1.1.0 Вычитает указанное количество лет из даты, даты и времени или даты либо даты и времени в строковом формате. Синтаксис
subtractYears(datetime, num)
Аргументы
  • datetime — дата или дата и время, из которых нужно вычесть указанное количество лет. Date или Date32 или DateTime или DateTime64 или String
  • num — количество лет, которое нужно вычесть. (U)Int* или Float*
Возвращаемое значение Возвращает datetime за вычетом num лет. Date или Date32 или DateTime или DateTime64 Примеры Вычитание лет из разных типов дат
Query
WITH
    toDate('2024-01-01') AS date,
    toDateTime('2024-01-01 00:00:00') AS date_time,
    '2024-01-01 00:00:00' AS date_time_string
SELECT
    subtractYears(date, 1) AS subtract_years_with_date,
    subtractYears(date_time, 1) AS subtract_years_with_date_time,
    subtractYears(date_time_string, 1) AS subtract_years_with_date_time_string
Response
┌─subtract_years_with_date─┬─subtract_years_with_date_time─┬─subtract_years_with_date_time_string─┐
│               2023-01-01 │           2023-01-01 00:00:00 │              2023-01-01 00:00:00.000 │
└──────────────────────────┴───────────────────────────────┴──────────────────────────────────────┘
Использование альтернативного синтаксиса INTERVAL
Query
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 year)
Response
┌─minus(CAST('⋯alYear(10))─┐
│               1988-06-16 │
└──────────────────────────┘

timeDiff

Добавленный в: v23.4.0 Возвращает разницу между двумя датами или значениями даты и времени в секундах. Разница вычисляется как enddate - startdate. Эта функция эквивалентна dateDiff('second', startdate, enddate). Чтобы вычислить разницу во времени в других единицах (часах, днях, месяцах и т. д.), используйте функцию dateDiff. Синтаксис
timeDiff(startdate, enddate)
Аргументы
  • startdate — Первое значение времени, которое вычитается (вычитаемое). Date или Date32 или DateTime или DateTime64
  • enddate — Второе значение времени, из которого вычитается первое (уменьшаемое). Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает разницу между enddate и startdate, выраженную в секундах. Int64 Примеры Вычисление разницы во времени в секундах
Query
SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res
Response
┌───res─┐
│ 90000 │
└───────┘
Рассчитать разницу во времени и перевести в часы
Query
SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) / 3600 AS hours
Response
┌─hours─┐
│    25 │
└───────┘
Эквивалентно dateDiff в секундах
Query
SELECT
    timeDiff(toDateTime('2021-12-29'), toDateTime('2022-01-01')) AS time_diff_result,
    dateDiff('second', toDateTime('2021-12-29'), toDateTime('2022-01-01')) AS date_diff_result
Response
┌─time_diff_result─┬─date_diff_result─┐
│           259200 │           259200 │
└──────────────────┴──────────────────┘

timeSlot

Добавленный в: v1.1.0 Округляет время до начала получасового интервала.
Хотя эта функция может принимать в качестве аргумента значения расширенных типов Date32 и DateTime64, передача ей времени вне обычного диапазона (с 1970 по 2149 год для Date / до 2106 года для DateTime) приведет к неверным результатам.
Синтаксис
timeSlot(time[, time_zone])
Аргументы
  • time — Время, которое нужно округлить до начала получасового интервала. DateTime или Date32 или DateTime64
  • time_zone — Необязательно. Константное значение типа String или выражение, задающее часовой пояс. String
Возвращаемое значение Возвращает время, округлённое до начала получасового интервала. DateTime Примеры Округление времени до получасового интервала
Query
SELECT timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))
Response
┌─timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))─┐
│                                2000-01-02 03:00:00 │
└────────────────────────────────────────────────────┘

timeSlots

Добавленный в: v1.1.0 Для интервала времени, начинающегося в StartTime и длящегося Duration секунд, возвращает массив моментов времени, состоящий из точек этого интервала, округлённых вниз с шагом Size секунд. Size — необязательный параметр, по умолчанию равный 1800 (30 минутам). Это необходимо, например, при поиске просмотров страниц в соответствующем сеансе. Для DateTime64 масштаб возвращаемого значения может отличаться от масштаба StartTime. Используется наибольший масштаб среди всех переданных аргументов. Синтаксис
timeSlots(StartTime, Duration[, Size])
Аргументы
  • StartTime — Время начала интервала. DateTime или DateTime64
  • Duration — Длительность интервала в секундах. UInt32 или DateTime64
  • Size — Необязательно. Размер временных слотов в секундах. По умолчанию — 1800 (30 минут). UInt32 или DateTime64
Возвращаемое значение Возвращает массив значений DateTime/DateTime64 (тип возвращаемого значения соответствует типу StartTime). Для DateTime64 масштаб возвращаемого значения может отличаться от масштаба StartTime — берется наибольший масштаб среди всех переданных аргументов. Array(DateTime) или Array(DateTime64) Примеры Генерация временных слотов для интервала
Query
SELECT timeSlots(toDateTime('2012-01-01 12:20:00'), toUInt32(600));
SELECT timeSlots(toDateTime('1980-12-12 21:01:02', 'UTC'), toUInt32(600), 299);
SELECT timeSlots(toDateTime64('1980-12-12 21:01:02.1234', 4, 'UTC'), toDecimal64(600.1, 1), toDecimal64(299, 0))
Response
┌─timeSlots(toDateTime('2012-01-01 12:20:00'), toUInt32(600))─┐
│ ['2012-01-01 12:00:00','2012-01-01 12:30:00']               │
└─────────────────────────────────────────────────────────────┘
┌─timeSlots(toDateTime('1980-12-12 21:01:02', 'UTC'), toUInt32(600), 299)─┐
│ ['1980-12-12 20:56:13','1980-12-12 21:01:12','1980-12-12 21:06:11']     │
└─────────────────────────────────────────────────────────────────────────┘
┌─timeSlots(toDateTime64('1980-12-12 21:01:02.1234', 4, 'UTC'), toDecimal64(600.1, 1), toDecimal64(299, 0))─┐
│ ['1980-12-12 20:56:13.0000','1980-12-12 21:01:12.0000','1980-12-12 21:06:11.0000']                        │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────┘

временная метка

Добавленный в: v23.9.0 Преобразует первый аргумент expr в тип DateTime64(6). Если указан второй аргумент expr_time, к преобразованному значению будет добавлено указанное время. Синтаксис
timestamp(expr[, expr_time])
Аргументы
  • expr — Дата или дата и время. String
  • expr_time — Необязательно. Время, которое будет добавлено к преобразованному значению. String
Возвращаемое значение Возвращает преобразованное значение expr или expr с добавленным временем в формате DateTime64(6) Примеры Преобразование строки даты в DateTime64(6)
Query
SELECT timestamp('2023-12-31') AS ts;
Response
┌─────────────────────────ts─┐
│ 2023-12-31 00:00:00.000000 │
└────────────────────────────┘
Добавить время к строке с датой
Query
SELECT timestamp('2023-12-31 12:00:00', '12:00:00.11') AS ts;
Response
┌─────────────────────────ts─┐
│ 2024-01-01 00:00:00.110000 │
└────────────────────────────┘

timezone

Добавленный в: v21.4.0 Возвращает имя часового пояса текущего сеанса или преобразует смещение либо название часового пояса в каноническое имя часового пояса. Синтаксис
timezone()
Псевдонимы: timeZone Аргументы
  • Нет.
Возвращаемое значение Возвращает каноническое имя часового пояса в виде String Примеры Пример использования
Query
SELECT timezone()
Response
┌─timezone()───────┐
│ Europe/Amsterdam │
└──────────────────┘

timezoneOf

Добавленный в: v21.4.0 Возвращает название часового пояса для значения DateTime или DateTime64. Синтаксис
timezoneOf(datetime)
Псевдонимы: timeZoneOf Аргументы
  • datetime — Значение типа DateTime или DateTime64
  • timezone — Необязательно. Имя часового пояса, в который нужно преобразовать значение datetime. String
Возвращаемое значение Возвращает имя часового пояса для datetime. String Примеры Пример использования
Query
SELECT timezoneOf(now());
Response
┌─timezoneOf(now())─┐
│ Europe/Amsterdam  │
└───────────────────┘

timezoneOffset

Добавленный в: v21.6.0 Возвращает смещение часового пояса относительно UTC в секундах. Функция учитывает переход на летнее время и исторические изменения часового пояса для указанных даты и времени. Синтаксис
timezoneOffset(datetime)
Псевдонимы: timeZoneOffset Аргументы
  • datetime — значение DateTime, для которого требуется получить смещение часового пояса. DateTime или DateTime64
Возвращаемое значение Возвращает смещение относительно UTC в секундах Int32 Примеры Пример использования
Query
SELECT toDateTime('2021-04-21 10:20:30', 'America/New_York') AS Time,
toTypeName(Time) AS Type,
timezoneOffset(Time) AS Offset_in_seconds,
(Offset_in_seconds / 3600) AS Offset_in_hours;
Response
┌────────────────Time─┬─Type─────────────────────────┬─Offset_in_seconds─┬─Offset_in_hours─┐
│ 2021-04-21 10:20:30 │ DateTime('America/New_York') │            -14400 │              -4 │
└─────────────────────┴──────────────────────────────┴───────────────────┴─────────────────┘

toDayOfMonth

Добавленный в: v1.1.0 Возвращает день месяца (1–31) из значения типа Date или DateTime. Синтаксис
toDayOfMonth(datetime)
Псевдонимы: DAY, DAYOFMONTH Аргументы
  • datetime — Дата или дата и время, из которых извлекается день месяца. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает день месяца для указанной даты/времени UInt8 Примеры Пример использования
Query
SELECT toDayOfMonth(toDateTime('2023-04-21 10:20:30'))
Response
┌─toDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                              21 │
└─────────────────────────────────────────────────┘

toDayOfWeek

Добавленный в: v1.1.0 Возвращает номер дня недели для значения Date или DateTime. Форма toDayOfWeek() с двумя аргументами позволяет указать, начинается ли неделя с понедельника или воскресенья, а также должен ли возвращаемый результат находиться в диапазоне от 0 до 6 или от 1 до 7.
РежимПервый день неделиДиапазон
0Понедельник1-7: понедельник = 1, вторник = 2, …, воскресенье = 7
1Понедельник0-6: понедельник = 0, вторник = 1, …, воскресенье = 6
2Воскресенье0-6: воскресенье = 0, понедельник = 1, …, суббота = 6
3Воскресенье1-7: воскресенье = 1, понедельник = 2, …, суббота = 7
Синтаксис
toDayOfWeek(datetime[, mode[, timezone]])
Псевдонимы: DAYOFWEEK Аргументы
  • datetime — Дата или дата и время, для которых нужно определить день недели. Date или Date32 или DateTime или DateTime64
  • mode — Необязательный параметр. Целое число, задающее режим недели (0-3). Если не указан, по умолчанию используется 0. UInt8
  • timezone — Необязательный параметр. Часовой пояс, используемый для преобразования. String
Возвращаемое значение Возвращает день недели для указанного Date или DateTime. UInt8 Примеры Пример использования
Query
-- Следующая дата — 21 апреля 2023 года, это пятница:
SELECT
    toDayOfWeek(toDateTime('2023-04-21')),
    toDayOfWeek(toDateTime('2023-04-21'), 1)
Response
┌─toDayOfWeek(toDateTime('2023-04-21'))─┬─toDayOfWeek(toDateTime('2023-04-21'), 1)─┐
│                                     5 │                                        4 │
└───────────────────────────────────────┴──────────────────────────────────────────┘

toDayOfYear

Добавленный в: v18.4.0 Возвращает номер дня в году (1–366) для значения типа Date или DateTime. Синтаксис
toDayOfYear(datetime)
Псевдонимы: DAYOFYEAR Аргументы
  • datetime — дата или дата и время, из которых нужно получить день года. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает день года для указанного значения Date или DateTime UInt16 Примеры Пример использования
Query
SELECT toDayOfYear(toDateTime('2023-04-21 10:20:30'))
Response
┌─toDayOfYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                            111 │
└────────────────────────────────────────────────┘

toDaysInMonth

Добавленный в: v26.3.0 Возвращает количество дней в месяце для значения типа Date или DateTime. Возвращаемое значение находится в диапазоне от 28 до 31. Синтаксис
toDaysInMonth(datetime)
Аргументы
  • datetime — Дата или дата и время, для которых нужно получить количество дней в месяце. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает количество дней в месяце для указанной даты/времени. UInt8 Примеры Пример использования
Query
SELECT toDaysInMonth(toDate('2023-02-01')), toDaysInMonth(toDate('2024-02-01')), toDaysInMonth(toDate('2023-01-01'))
Response
┌─toDaysInMonth(toDate('2023-02-01'))─┬─toDaysInMonth(toDate('2024-02-01'))─┬─toDaysInMonth(toDate('2023-01-01'))─┐
│                                  28 │                                  29 │                                  31 │
└─────────────────────────────────────┴─────────────────────────────────────┴─────────────────────────────────────┘

toDaysSinceYearZero

Добавленный в: v23.9.0 Для указанной даты возвращает количество дней, прошедших с 1 января 0000 по пролептическому григорианскому календарю, определённому стандартом ISO 8601. Вычисление выполняется так же, как в функции MySQL TO_DAYS. Синтаксис
toDaysSinceYearZero(date[, time_zone])
Псевдонимы: TO_DAYS Аргументы
  • date — Дата или дата и время, для которых вычисляется количество дней с начала нулевого года. Date или Date32 или DateTime или DateTime64
  • time_zone — Часовой пояс. String
Возвращаемое значение Возвращает количество дней, прошедших с даты 0000-01-01. UInt32 Примеры Вычислить количество дней с начала нулевого года
Query
SELECT toDaysSinceYearZero(toDate('2023-09-08'))
Response
┌─toDaysSinceYearZero(toDate('2023-09-08')))─┐
│                                     713569 │
└────────────────────────────────────────────┘

toHour

Добавленный в: v1.1.0 Возвращает часовой компонент (0–23) значения DateTime или DateTime64. Синтаксис
toHour(datetime)
Псевдонимы: HOUR Аргументы
  • datetime — дата и время, из которых нужно получить час. DateTime или DateTime64
Возвращаемое значение Возвращает час (0–23) для datetime. UInt8 Примеры Пример использования
Query
SELECT toHour(toDateTime('2023-04-21 10:20:30'))
Response
┌─toHour(toDateTime('2023-04-21 10:20:30'))─┐
│                                        10 │
└───────────────────────────────────────────┘

toISOWeek

Добавленный в: v20.1.0 Возвращает номер недели по ISO для значения типа дата или дата и время. Это функция совместимости, эквивалентная toWeek(date, 3). Недели ISO начинаются в понедельник, а первая неделя года включает 4 января. Согласно ISO 8601, номера недель находятся в диапазоне от 1 до 53. Обратите внимание, что для дат вблизи начала или конца года может возвращаться номер недели предыдущего или следующего года. Например, 29 декабря 2025 года возвращает неделю 1, поскольку эта дата попадает в первую неделю, включающую 4 января 2026 года. Синтаксис
toISOWeek(datetime[, timezone])
Аргументы
  • datetime — Дата или дата и время, для которых нужно получить номер недели по ISO. Date или DateTime или Date32 или DateTime64
  • timezone — Необязательно. Часовой пояс. String
Возвращаемое значение Возвращает номер недели по ISO в соответствии со стандартом ISO 8601. Возвращает число от 1 до 53. UInt8 Примеры Получение номеров недель по ISO
Query
SELECT toDate('2016-12-27') AS date, toISOWeek(date) AS isoWeek
Response
┌───────date─┬─isoWeek─┐
│ 2016-12-27 │      52 │
└────────────┴─────────┘
ISO-неделя может относиться к другому году
Query
SELECT toDate('2025-12-29') AS date, toISOWeek(date) AS isoWeek, toYear(date) AS year
Response
┌───────date─┬─isoWeek─┬─year─┐
│ 2025-12-29 │       1 │ 2025 │
└────────────┴─────────┴──────┘

toISOYear

Добавленный в: v18.4.0 Преобразует дату или дату и время в номер года по ISO. Синтаксис
toISOYear(datetime)
Аргументы Возвращаемое значение Возвращает входное значение, преобразованное в номер года по ISO. UInt16 Примеры Получение года по ISO из значений даты
Query
SELECT
toISOYear(toDate('2024/10/02')) as year1,
toISOYear(toDateTime('2024-10-02 01:30:00')) as year2
Response
┌─week1─┬─week2─┐
│    40 │    40 │
└───────┴───────┘

toLastDayOfMonth

Добавленный в: v1.1.0 Округляет дату или дату и время до последнего дня месяца.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toLastDayOfMonth(value)
Псевдонимы: LAST_DAY Аргументы
  • value — дата или дата и время, которые нужно округлить вверх до последнего дня месяца. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает дату последнего дня месяца для указанной даты или даты и времени. Date Примеры Округлить вверх до последнего дня месяца
Query
SELECT toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))
Response
┌─toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-04-30 │
└─────────────────────────────────────────────────────┘

toLastDayOfWeek

Добавленный в: v23.5.0 Округляет дату или дату и время до ближайшей субботы или воскресенья в большую сторону.
Возвращаемый тип можно настроить параметром enable_extended_results_for_datetime_functions.
Синтаксис
toLastDayOfWeek(datetime[, mode[, timezone]])
Аргументы
  • datetime — Дата или дата и время для преобразования. Date или DateTime или Date32 или DateTime64
  • mode — Определяет первый день недели, как описано в функции toWeek(). По умолчанию — 0. UInt8
  • timezone — Необязательно. Часовой пояс, используемый для преобразования. Если не указан, используется часовой пояс сервера. String
Возвращаемое значение Возвращает дату ближайшей субботы или воскресенья, совпадающую с указанной датой или следующую за ней, в зависимости от режима. Date или Date32 Примеры Округление вверх до ближайшей субботы или воскресенья
Query
SELECT
    toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')), /* пятница */
    toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* пятница */
    toLastDayOfWeek(toDate('2023-04-23')), /* воскресенье */
    toLastDayOfWeek(toDate('2023-04-23'), 1) /* воскресенье */
FORMAT Vertical
Response
Строка 1:
──────
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')):      2023-04-23
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1):   2023-04-22
toLastDayOfWeek(toDate('2023-04-23')):                   2023-04-23
toLastDayOfWeek(toDate('2023-04-23'), 1):                2023-04-23

toMillisecond

Добавленный в: v24.2.0 Возвращает миллисекундную составляющую (0–999) значения DateTime или DateTime64. Синтаксис
toMillisecond(datetime)
Псевдонимы: MILLISECOND Аргументы
  • datetime — дата и время, из которых извлекается миллисекунда. DateTime или DateTime64
Возвращаемое значение Возвращает миллисекунду в пределах минуты (0 - 59) для datetime. UInt16 Примеры Пример использования
Query
SELECT toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3));
Response
┌──toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3))─┐
│                                                        456 │
└────────────────────────────────────────────────────────────┘

toMinute

Добавленный в: v1.1.0 Возвращает значение минут (0–59) для Date или DateTime. Синтаксис
toMinute(datetime)
Псевдонимы: MINUTE Аргументы
  • datetime — дата и время, из которых нужно получить минуты. DateTime или DateTime64
Возвращаемое значение Возвращает минуты в часе (0 - 59) для datetime. UInt8 Примеры Пример использования
Query
SELECT toMinute(toDateTime('2023-04-21 10:20:30'))
Response
┌─toMinute(toDateTime('2023-04-21 10:20:30'))─┐
│                                          20 │
└─────────────────────────────────────────────┘

toModifiedJulianDay

Добавленный в: v21.1.0 Преобразует дату пролептического григорианского календаря в текстовом формате YYYY-MM-DD в номер модифицированного юлианского дня типа Int32. Эта функция поддерживает даты от 0000-01-01 до 9999-12-31. Она вызывает исключение, если аргумент не удаётся разобрать как дату или если дата недопустима. Синтаксис
toModifiedJulianDay(date)
Аргументы Возвращаемое значение Возвращает число модифицированного юлианского дня. Int32 Примеры Преобразование даты в модифицированный юлианский день
Query
SELECT toModifiedJulianDay('2020-01-01')
Response
┌─toModifiedJulianDay('2020-01-01')─┐
│                             58849 │
└───────────────────────────────────┘

toModifiedJulianDayOrNull

Добавленный в: v21.1.0 Аналогично toModifiedJulianDay(), но вместо генерации исключений возвращает NULL. Синтаксис
toModifiedJulianDayOrNull(date)
Аргументы Возвращаемое значение Возвращает номер модифицированного юлианского дня для корректного значения date, в противном случае — null. Nullable(Int32) Примеры Преобразование даты в модифицированный юлианский день с обработкой null
Query
SELECT toModifiedJulianDayOrNull('2020-01-01');
SELECT toModifiedJulianDayOrNull('0000-00-00'); -- некорректная дата, возвращает NULL
Response
┌─toModifiedJu⋯020-01-01')─┐
│                    58849 │
└──────────────────────────┘
┌─toModifiedJu⋯000-00-00')─┐
│                     ᴺᵁᴸᴸ │
└──────────────────────────┘

toMonday

Добавленный в: v1.1.0 Округляет дату или дату и время вниз до понедельника той же недели. Возвращает дату.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toMonday(value)
Аргументы
  • value — дата или дата и время, которые нужно округлить вниз до понедельника соответствующей недели. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает дату понедельника той же недели для указанной даты или даты и времени. Date Примеры Округлить вниз до понедельника недели
Query
SELECT
toMonday(toDateTime('2023-04-21 10:20:30')), -- Пятница
toMonday(toDate('2023-04-24'));              -- Уже понедельник
Response
┌─toMonday(toDateTime('2023-04-21 10:20:30'))─┬─toMonday(toDate('2023-04-24'))─┐
│                                  2023-04-17 │                     2023-04-24 │
└─────────────────────────────────────────────┴────────────────────────────────┘

toMonth

Добавленный в: v1.1.0 Возвращает номер месяца (1–12) из значения Date или DateTime. Синтаксис
toMonth(datetime)
Псевдонимы: MONTH Аргументы
  • datetime — Дата или дата и время, из которых нужно получить месяц. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает месяц для указанной даты или даты и времени UInt8 Примеры Пример использования
Query
SELECT toMonth(toDateTime('2023-04-21 10:20:30'))
Response
┌─toMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                          4 │
└────────────────────────────────────────────┘

toMonthNumSinceEpoch

Добавленный в: v25.3.0 Возвращает количество месяцев, прошедших с начала 1970 года Синтаксис
toMonthNumSinceEpoch(date)
Аргументы Возвращаемое значение Положительное целое число Примеры Пример
Query
SELECT toMonthNumSinceEpoch(toDate('2024-10-01'))
Response
657

toQuarter

Добавленный в: v1.1.0 Возвращает номер квартала года (1–4) для указанного значения Date или DateTime. Синтаксис
toQuarter(datetime)
Псевдонимы: QUARTER Аргументы
  • datetime — дата или дата и время, для которых нужно получить квартал года. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает квартал года для указанной даты/времени UInt8 Примеры Пример использования
Query
SELECT toQuarter(toDateTime('2023-04-21 10:20:30'))
Response
┌─toQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│                                            2 │
└──────────────────────────────────────────────┘

toRelativeDayNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество дней, прошедших с некоторой фиксированной точки в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать самостоятельно. Основное назначение функции — вычислять разницу в днях между двумя датами или датой и временем, например, toRelativeDayNum(dt1) - toRelativeDayNum(dt2). Синтаксис
toRelativeDayNum(date)
Аргументы Возвращаемое значение Возвращает количество дней от фиксированной точки отсчета в прошлом. UInt32 Примеры Вычисление относительных номеров дней
Query
SELECT toRelativeDayNum(toDate('2023-04-01')) - toRelativeDayNum(toDate('2023-01-01'))
Response
┌─minus(toRela⋯3-01-01')))─┐
│                       90 │
└──────────────────────────┘

toRelativeHourNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество часов, прошедших с некоторого фиксированного момента в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычисление разницы в часах между двумя датами или датами и временем, например, toRelativeHourNum(dt1) - toRelativeHourNum(dt2). Синтаксис
toRelativeHourNum(date)
Аргументы Возвращаемое значение Возвращает число часов с фиксированной точки отсчета в прошлом. UInt32 Примеры Получить относительные номера часов
Query
SELECT toRelativeHourNum(toDateTime('2023-01-01 12:00:00')) - toRelativeHourNum(toDateTime('2023-01-01 00:00:00')) AS hours_difference
Response
┌─hours_difference─┐
│               12 │
└──────────────────┘

toRelativeMinuteNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество минут, прошедших с некоторого фиксированного момента в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не следует использовать автономно. Основное назначение функции — вычисление разницы в минутах между двумя датами или датами и временем, например, toRelativeMinuteNum(dt1) - toRelativeMinuteNum(dt2). Синтаксис
toRelativeMinuteNum(date)
Аргументы Возвращаемое значение Возвращает количество минут от фиксированной точки отсчета в прошлом. UInt32 Примеры Получение относительных номеров минут
Query
SELECT toRelativeMinuteNum(toDateTime('2023-01-01 00:30:00')) - toRelativeMinuteNum(toDateTime('2023-01-01 00:00:00')) AS minutes_difference
Response
┌─minutes_difference─┐
│                 30 │
└────────────────────┘

toRelativeMonthNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в число месяцев, прошедших с некоторой фиксированной точки в прошлом. Точная точка во времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычисление разницы в месяцах между двумя датами или значениями типа «дата и время», например, toRelativeMonthNum(dt1) - toRelativeMonthNum(dt2). Синтаксис
toRelativeMonthNum(date)
Аргументы Возвращаемое значение Возвращает количество месяцев от фиксированной точки отсчёта в прошлом. UInt32 Примеры Получение относительных номеров месяцев
Query
SELECT toRelativeMonthNum(toDate('2023-04-01')) - toRelativeMonthNum(toDate('2023-01-01')) AS months_difference
Response
┌─months_difference─┐
│                 3 │
└───────────────────┘

toRelativeQuarterNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество кварталов, прошедших с некоторого фиксированного момента в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычисление разницы в кварталах между двумя датами или датами и временем, например, toRelativeQuarterNum(dt1) - toRelativeQuarterNum(dt2). Синтаксис
toRelativeQuarterNum(date)
Аргументы Возвращаемое значение Возвращает количество кварталов, прошедших с фиксированной точки отсчёта в прошлом. UInt32 Примеры Получение относительных номеров кварталов
Query
SELECT toRelativeQuarterNum(toDate('2023-04-01')) - toRelativeQuarterNum(toDate('2023-01-01')) AS quarters_difference
Response
┌─quarters_difference─┐
│                   1 │
└─────────────────────┘

toRelativeSecondNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество секунд, прошедших с некоторой фиксированной точки в прошлом. Точная точка во времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычислять разницу в секундах между двумя датами или значениями даты и времени, например, toRelativeSecondNum(dt1) - toRelativeSecondNum(dt2). Синтаксис
toRelativeSecondNum(date)
Аргументы Возвращаемое значение Возвращает число секунд от фиксированной точки отсчёта в прошлом. UInt32 Примеры Получение относительных номеров секунд
Query
SELECT toRelativeSecondNum(toDateTime('2023-01-01 00:01:00')) - toRelativeSecondNum(toDateTime('2023-01-01 00:00:00')) AS seconds_difference
Response
┌─seconds_difference─┐
│                 60 │
└────────────────────┘

toRelativeWeekNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество недель, прошедших с некоторого фиксированного момента в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычисление разницы в неделях между двумя датами или значениями даты и времени, например, toRelativeWeekNum(dt1) - toRelativeWeekNum(dt2). Синтаксис
toRelativeWeekNum(date)
Аргументы Возвращаемое значение Возвращает количество недель, прошедших с фиксированной точки отсчета в прошлом. UInt32 Примеры Получение относительных номеров недель
Query
SELECT toRelativeWeekNum(toDate('2023-01-08')) - toRelativeWeekNum(toDate('2023-01-01')) AS weeks_difference
Response
┌─weeks_difference─┐
│                1 │
└──────────────────┘

toRelativeYearNum

Добавленный в: v1.1.0 Преобразует дату или дату и время в количество лет, прошедших с некоторой фиксированной точки в прошлом. Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно. Основное назначение функции — вычисление разницы в годах между двумя датами или значениями типа дата и время, например, toRelativeYearNum(dt1) - toRelativeYearNum(dt2). Синтаксис
toRelativeYearNum(date)
Аргументы Возвращаемое значение Возвращает количество лет от фиксированной точки отсчета в прошлом. UInt16 Примеры Получение относительного номера года
Query
SELECT toRelativeYearNum('2010-10-01'::DateTime) - toRelativeYearNum('2000-01-01'::DateTime)
Response
┌─minus(toRela⋯ateTime')))─┐
│                       10 │
└──────────────────────────┘

toSecond

Добавленный в: v1.1.0 Возвращает секундную составляющую (0-59) значения DateTime или DateTime64. Синтаксис
toSecond(datetime)
Псевдонимы: SECOND Аргументы
  • datetime — дата и время, из которых нужно получить секунду. DateTime или DateTime64
Возвращаемое значение Возвращает секунду минуты (0 - 59) для datetime. UInt8 Примеры Пример использования
Query
SELECT toSecond(toDateTime('2023-04-21 10:20:30'))
Response
┌─toSecond(toDateTime('2023-04-21 10:20:30'))─┐
│                                          30 │
└─────────────────────────────────────────────┘

toStartOfDay

Добавленный в: v1.1.0 Округляет дату и время вниз до начала дня.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfDay(datetime)
Аргументы
  • datetime — Дата или дата и время, которые нужно округлить. Date или DateTime
Возвращаемое значение Возвращает дату и время, округлённые вниз до начала дня. DateTime или DateTime64 Примеры Округление вниз до начала дня
Query
SELECT toStartOfDay(toDateTime('2023-04-21 10:20:30'))
Response
┌─toStartOfDay(toDateTime('2023-04-21 10:20:30'))─┐
│                             2023-04-21 00:00:00 │
└─────────────────────────────────────────────────┘

toStartOfFifteenMinutes

Добавленный в: v1.1.0 Округляет дату и время в меньшую сторону до начала пятнадцатиминутного интервала.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfFifteenMinutes(datetime)
Аргументы
  • datetime — Дата или дата и время, которое нужно округлить. DateTime или DateTime64
Возвращаемое значение Возвращает дату и время, округлённые до начала ближайшего пятнадцатиминутного интервала. DateTime или DateTime64 Примеры Пример
Query
SELECT
    toStartOfFifteenMinutes(toDateTime('2023-04-21 10:17:00')),
    toStartOfFifteenMinutes(toDateTime('2023-04-21 10:20:00')),
    toStartOfFifteenMinutes(toDateTime('2023-04-21 10:23:00'))
FORMAT Vertical
Response
Row 1:
──────
toStartOfFifteenMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:15:00
toStartOfFifteenMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:15:00
toStartOfFifteenMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:15:00

toStartOfFiveMinutes

Добавленный в: v22.6.0 Округляет дату и время вниз до начала ближайшего пятиминутного интервала.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfFiveMinutes(datetime)
Псевдонимы: toStartOfFiveMinute Аргументы
  • datetime — дата и время, которые нужно округлить. DateTime или DateTime64
Возвращаемое значение Возвращает дату и время, округлённые к началу ближайшего пятиминутного интервала. DateTime или DateTime64 Примеры Пример
Query
SELECT
    toStartOfFiveMinutes(toDateTime('2023-04-21 10:17:00')),
    toStartOfFiveMinutes(toDateTime('2023-04-21 10:20:00')),
    toStartOfFiveMinutes(toDateTime('2023-04-21 10:23:00'))
FORMAT Vertical
Response
Строка 1:
──────
toStartOfFiveMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:15:00
toStartOfFiveMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:20:00
toStartOfFiveMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:20:00

toStartOfHour

Добавленный в: v1.1.0 Округляет дату и время вниз до начала часа.
Возвращаемый тип можно настроить параметром enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfHour(datetime)
Аргументы
  • datetime — Дата и время, которое нужно округлить. DateTime или DateTime64
Возвращаемое значение Возвращает дату и время, округлённые до начала часа. DateTime или DateTime64 Примеры Округление до начала часа
Query
SELECT
    toStartOfHour(toDateTime('2023-04-21 10:20:30'));
Response
┌─────────────────res─┬─toTypeName(res)─┐
│ 2023-04-21 10:00:00 │ DateTime        │
└─────────────────────┴─────────────────┘

toStartOfISOYear

Добавленный в: v1.1.0 Округляет дату или дату и время вниз до первого дня ISO-года, который может не совпадать с обычным календарным годом. См. дату недели по ISO.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfISOYear(value)
Аргументы
  • value — дата или дата и время, которые нужно округлить вниз до первого дня года по ISO. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает первый день года по ISO для указанной даты или даты и времени. Date Примеры Округлить вниз до первого дня года по ISO
Query
SELECT toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))
Response
┌─toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-01-02 │
└─────────────────────────────────────────────────────┘

toStartOfInterval

Добавленный в: v20.1.0 Эта функция обобщает остальные функции 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).
Вычисление выполняется относительно определённых моментов времени:
IntervalStart
YEARгод 0
QUARTER1900 Q1
MONTHянварь 1900
WEEK1970, 1-я неделя (01-05)
DAY1970-01-01
HOUR(*)
MINUTE1970-01-01 00:00:00
SECOND1970-01-01 00:00:00
MILLISECOND1970-01-01 00:00:00
MICROSECOND1970-01-01 00:00:00
NANOSECOND1970-01-01 00:00:00
(*) интервалы в часах — особый случай: вычисление всегда выполняется относительно 00:00:00 (полуночи) текущего дня. Поэтому
имеют смысл только значения часов от 1 до 23.
Если указан unit WEEK, toStartOfInterval считает, что недели начинаются с понедельника. Обратите внимание, что это поведение отличается от поведения функции toStartOfWeek, в которой недели по умолчанию начинаются с воскресенья. Вторая перегрузка имитирует функцию time_bucket() из TimescaleDB и, соответственно, функцию date_bin() из PostgreSQL. Синтаксис
toStartOfInterval(value, INTERVAL x unit[, time_zone])
toStartOfInterval(value, INTERVAL x unit[, origin[, time_zone]])
Псевдонимы: time_bucket, date_bin Аргументы
  • value — Значение типа дата или дата и время, которое нужно округлить вниз. Date или DateTime или DateTime64
  • x — Число, задающее длину интервала. - unit — Единица интервала: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND. - time_zone — Необязательно. Имя часового пояса в виде строки. - origin — Необязательно. Точка отсчёта для вычисления (только для второй перегрузки).
Возвращаемое значение Возвращает начало интервала, в который попадает входное значение. DateTime Примеры Базовое округление по интервалу
Query
SELECT toStartOfInterval(toDateTime('2023-01-15 14:30:00'), INTERVAL 1 MONTH)
Response
┌─toStartOfInt⋯alMonth(1))─┐
│               2023-01-01 │
└──────────────────────────┘
Использование начальной точки
Query
SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'))
Response
┌─toStartOfInt⋯14:35:30'))─┐
│      2023-01-01 14:44:30 │
└──────────────────────────┘

toStartOfMicrosecond

Добавленный в: v22.6.0 Округляет дату и время вниз до начала микросекунды. Синтаксис
toStartOfMicrosecond(datetime[, timezone])
Аргументы
  • datetime — Дата и время. DateTime64
  • timezone — Необязательно. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметра value. String
Возвращаемое значение Исходное значение с субмикросекундами DateTime64 Примеры Запрос без часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64);
Response
┌────toStartOfMicrosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999000 │
└───────────────────────────────┘
Запрос с указанием часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64, 'Asia/Istanbul');
Response
┌─toStartOfMicrosecond(dt64, 'Asia/Istanbul')─┐
│               2020-01-01 12:20:30.999999000 │
└─────────────────────────────────────────────┘

toStartOfMillisecond

Добавленный в: v22.6.0 Округляет дату и время вниз до начала миллисекунды. Синтаксис
toStartOfMillisecond(datetime[, timezone])
Аргументы
  • datetime — Дата и время. DateTime64
  • timezone — Необязательный. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметра value. String
Возвращаемое значение Входное значение с долями миллисекунды. DateTime64 Примеры Запрос без часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64);
Response
┌────toStartOfMillisecond(dt64)─┐
│ 2020-01-01 10:20:30.999000000 │
└───────────────────────────────┘
Запрос с указанием часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64, 'Asia/Istanbul');
Response
┌─toStartOfMillisecond(dt64, 'Asia/Istanbul')─┐
│               2020-01-01 12:20:30.999000000 │
└─────────────────────────────────────────────┘

toStartOfMinute

Добавленный в: v1.1.0 Округляет дату и время вниз до начала минуты.
Возвращаемый тип можно задать с помощью настройки enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfMinute(datetime)
Аргументы
  • datetime — дата и время, которое нужно округлить. DateTime или DateTime64
Возвращаемое значение Возвращает дату и время, округлённые до начала минуты. DateTime или DateTime64 Примеры Округление до начала минуты
Query
SELECT
    toStartOfMinute(toDateTime('2023-04-21 10:20:30')),
    toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8))
FORMAT Vertical
Response
Строка 1:
──────
toStartOfMinute(toDateTime('2023-04-21 10:20:30')):           2023-04-21 10:20:00
toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8)): 2023-04-21 10:20:00

toStartOfMonth

Добавленный в: v1.1.0 Округляет дату или дату и время вниз до первого дня месяца.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfMonth(value)
Аргументы
  • value — дата или дата и время, которые нужно округлить до первого дня месяца. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает первый день месяца для указанной даты или даты и времени. Date Примеры Округление до первого дня месяца
Query
SELECT toStartOfMonth(toDateTime('2023-04-21 10:20:30'))
Response
┌─toStartOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│                                        2023-04-01 │
└───────────────────────────────────────────────────┘

toStartOfNanosecond

Добавленный в: v22.6.0 Округляет дату и время вниз до начала наносекунды. Синтаксис
toStartOfNanosecond(datetime[, timezone])
Аргументы
  • datetime — Дата и время. DateTime64
  • timezone — Необязательно. Часовой пояс возвращаемого значения. Если не указан, функция использует часовой пояс параметра value. String
Возвращаемое значение Исходное значение с наносекундами. DateTime64 Примеры Запрос без часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64);
Response
┌─────toStartOfNanosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999999 │
└───────────────────────────────┘
Запрос с указанием часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64, 'Asia/Istanbul');
Response
┌─toStartOfNanosecond(dt64, 'Asia/Istanbul')─┐
│              2020-01-01 12:20:30.999999999 │
└────────────────────────────────────────────┘

toStartOfQuarter

Добавленный в: v1.1.0 Округляет дату или дату и время вниз до первого дня квартала. Первый день квартала — это 1 января, 1 апреля, 1 июля или 1 октября.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfQuarter(value)
Аргументы
  • value — Дата или дата и время, которое нужно округлить вниз до первого дня квартала. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает первый день квартала для указанной даты или даты и времени. Date Примеры Округление вниз до первого дня квартала
Query
SELECT toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))
Response
┌─toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│                                          2023-04-01 │
└─────────────────────────────────────────────────────┘

toStartOfSecond

Добавленный в: v20.5.0 Округляет дату и время до начала секунды. Синтаксис
toStartOfSecond(datetime[, timezone])
Аргументы
  • datetime — Дата и время, у которых нужно отбросить доли секунды. DateTime64
  • timezone — Необязательный. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметра value. String
Возвращаемое значение Возвращает входное значение без долей секунды. DateTime64 Примеры Запрос без часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64);
Response
┌───toStartOfSecond(dt64)─┐
│ 2020-01-01 10:20:30.000 │
└─────────────────────────┘
Запрос с указанием часового пояса
Query
WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64, 'Asia/Istanbul');
Response
┌─toStartOfSecond(dt64, 'Asia/Istanbul')─┐
│                2020-01-01 13:20:30.000 │
└────────────────────────────────────────┘

toStartOfTenMinutes

Добавленный в: v20.1.0 Округляет дату и время вниз до начала ближайшего интервала в десять минут.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfTenMinutes(datetime)
Аргументы Возвращаемое значение Возвращает дату и время, округлённые до начала ближайшего десятиминутного интервала. DateTime или DateTime64 Примеры Пример
Query
SELECT
    toStartOfTenMinutes(toDateTime('2023-04-21 10:17:00')),
    toStartOfTenMinutes(toDateTime('2023-04-21 10:20:00')),
    toStartOfTenMinutes(toDateTime('2023-04-21 10:23:00'))
FORMAT Vertical
Response
Row 1:
──────
toStartOfTenMinutes(toDateTime('2023-04-21 10:17:00')): 2023-04-21 10:10:00
toStartOfTenMinutes(toDateTime('2023-04-21 10:20:00')): 2023-04-21 10:20:00
toStartOfTenMinutes(toDateTime('2023-04-21 10:23:00')): 2023-04-21 10:20:00

toStartOfWeek

Добавленный в: v20.1.0 Округляет дату или дату и время вниз до ближайшего воскресенья или понедельника.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfWeek(datetime[, mode[, timezone]])
Аргументы
  • datetime — дата или дата и время для преобразования. Date или DateTime или Date32 или DateTime64
  • mode — определяет первый день недели, как описано для функции toWeek(). Значение по умолчанию — 0. UInt8
  • timezone — часовой пояс, используемый для преобразования. Если не указан, используется часовой пояс сервера. String
Возвращаемое значение Возвращает дату ближайшего воскресенья или понедельника, не превышающую указанную дату, в зависимости от режима. Date или Date32 Примеры Округление вниз до ближайшего воскресенья или понедельника
Query
SELECT
        toStartOfWeek(toDateTime('2023-04-21 10:20:30')), /* пятница */
        toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* пятница */
        toStartOfWeek(toDate('2023-04-24')), /* понедельник */
        toStartOfWeek(toDate('2023-04-24'), 1) /* понедельник */
    FORMAT Vertical
Response
Row 1:
    ──────
    toStartOfWeek(toDateTime('2023-04-21 10:20:30')):      2023-04-17
    toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1):   2023-04-17
    toStartOfWeek(toDate('2023-04-24')):                   2023-04-24
    toStartOfWeek(toDate('2023-04-24'), 1):                2023-04-24

toStartOfYear

Добавленный в: v1.1.0 Округляет дату или дату и время вниз до первого дня года. Возвращает значение типа Date.
Возвращаемый тип можно настроить с помощью параметра enable_extended_results_for_datetime_functions.
Синтаксис
toStartOfYear(value)
Аргументы
  • value — Дата или дата и время для округления вниз. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает первый день года для заданной даты/времени Date Примеры Округление вниз до первого дня года
Query
SELECT toStartOfYear(toDateTime('2023-04-21 10:20:30'))
Response
┌─toStartOfYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                       2023-01-01 │
└──────────────────────────────────────────────────┘

toTimeWithFixedDate

Добавленный в: v1.1.0 Извлекает компонент времени из значения даты или даты и времени. Возвращаемый результат представляет собой смещение относительно фиксированной точки во времени, сейчас это 1970-01-02, но точная точка во времени является деталью реализации и в будущем может измениться. Поэтому toTime не следует использовать автономно. Основное назначение функции — вычисление разницы во времени между двумя датами или значениями даты и времени, например: toTime(dt1) - toTime(dt2). Синтаксис
toTimeWithFixedDate(date[, timezone])
Аргументы
  • date — Дата для преобразования в значение времени. Date или DateTime или DateTime64
  • timezone — Необязательно. Часовой пояс для возвращаемого значения. String
Возвращаемое значение Возвращает компонент времени даты или даты и времени в виде смещения относительно фиксированного момента времени (сейчас это 1970-01-02). DateTime Примеры Вычисление разницы во времени между двумя датами
Query
SELECT toTimeWithFixedDate('2025-06-15 12:00:00'::DateTime) - toTimeWithFixedDate('2024-05-10 11:00:00'::DateTime) AS result, toTypeName(result)
Response
┌─result─┬─toTypeName(result)─┐
│   3600 │ Int32              │
└────────┴────────────────────┘

toTimezone

Добавленный в: v1.1.0 Преобразует DateTime или DateTime64 в указанный часовой пояс. Внутреннее значение (число unix-секунд) данных не изменяется. Изменяются только атрибут часового пояса значения и его строковое представление. Синтаксис
toTimezone(datetime, timezone)
Псевдонимы: toTimeZone Аргументы
  • date — Значение для преобразования. DateTime или DateTime64
  • timezone — Имя целевого часового пояса. String
Возвращаемое значение Возвращает ту же временную метку, что и входное значение, но с указанным часовым поясом. DateTime или DateTime64 Примеры Пример использования
Query
SELECT toDateTime('2019-01-01 00:00:00', 'UTC') AS time_utc,
toTypeName(time_utc) AS type_utc,
toInt32(time_utc) AS int32utc,
toTimezone(time_utc, 'Asia/Yekaterinburg') AS time_yekat,
toTypeName(time_yekat) AS type_yekat,
toInt32(time_yekat) AS int32yekat,
toTimezone(time_utc, 'US/Samoa') AS time_samoa,
toTypeName(time_samoa) AS type_samoa,
toInt32(time_samoa) AS int32samoa
FORMAT Vertical;
Response
Строка 1:
──────
time_utc:   2019-01-01 00:00:00
type_utc:   DateTime('UTC')
int32utc:   1546300800
time_yekat: 2019-01-01 05:00:00
type_yekat: DateTime('Asia/Yekaterinburg')
int32yekat: 1546300800
time_samoa: 2018-12-31 13:00:00
type_samoa: DateTime('US/Samoa')
int32samoa: 1546300800

toUTCTimestamp

Добавленный в: v23.8.0 Преобразует значение типа дата или дата и время из одного часового пояса во временную метку UTC. Эта функция в первую очередь предназначена для совместимости с Apache Spark и аналогичными фреймворками. Синтаксис
toUTCTimestamp(datetime, time_zone)
Псевдонимы: to_utc_timestamp Аргументы
  • datetime — Константное значение типа «дата или дата и время» либо выражение. DateTime или DateTime64
  • time_zone — Константное значение строкового типа либо выражение, задающее часовой пояс. String
Возвращаемое значение Возвращает дату или дату и время в часовом поясе UTC. DateTime или DateTime64 Примеры Преобразование в UTC
Query
SELECT toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai')
Response
┌─toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai')─┐
│                                     2023-03-15 16:00:00 │
└─────────────────────────────────────────────────────────┘

toUnixTimestamp

Добавленный в: v1.1.0 Преобразует String, Date или DateTime в Unix-временную метку (UInt32; количество секунд с 1970-01-01 00:00:00 UTC). Синтаксис
toUnixTimestamp(date[, timezone])
Аргументы
  • date — Значение для преобразования. Date или Date32 или DateTime или DateTime64 или String
  • timezone — Необязательно. Часовой пояс для преобразования. Если не указан, используется часовой пояс сервера. String
Возвращаемое значение Возвращает Unix-временную метку. UInt32 Примеры Пример использования
Query
SELECT
'2017-11-05 08:07:47' AS dt_str,
toUnixTimestamp(dt_str) AS from_str,
toUnixTimestamp(dt_str, 'Asia/Tokyo') AS from_str_tokyo,
toUnixTimestamp(toDateTime(dt_str)) AS from_datetime,
toUnixTimestamp(toDateTime64(dt_str, 0)) AS from_datetime64,
toUnixTimestamp(toDate(dt_str)) AS from_date,
toUnixTimestamp(toDate32(dt_str)) AS from_date32
FORMAT Vertical;
Response
строка 1:
──────
dt_str:          2017-11-05 08:07:47
from_str:        1509869267
from_str_tokyo:  1509836867
from_datetime:   1509869267
from_datetime64: 1509869267
from_date:       1509840000
from_date32:     1509840000

toWeek

Добавленный в: v20.1.0 Эта функция возвращает номер недели для даты или datetime. Форма toWeek() с двумя аргументами позволяет указать, начинается ли неделя в воскресенье или в понедельник, а также должен ли возвращаемый номер находиться в диапазоне от 0 до 53 или от 1 до 53. toISOWeek() — функция совместимости, эквивалентная toWeek(date,3). В следующей таблице описано, как работает аргумент mode.
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 января
Для значений mode со смыслом “как минимум с 4 днями в этом году” недели нумеруются в соответствии с ISO 8601:1988:
  • Если неделя, содержащая 1 января, включает 4 или более дней нового года, то это неделя 1.
  • В противном случае это последняя неделя предыдущего года, а следующая неделя — неделя 1.
Для значений mode со смыслом “содержит 1 января” неделя, содержащая 1 января, считается неделей 1. Не имеет значения, сколько дней нового года она содержит, даже если только один. То есть если последняя неделя декабря содержит 1 января следующего года, она будет неделей 1 следующего года. Первый аргумент также можно указать как String в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только из соображений совместимости с MySQL, которая требуется некоторым сторонним инструментам. Поскольку в будущем поддержка строковых аргументов может зависеть от новых настроек совместимости с MySQL, а разбор строк в целом работает медленно, рекомендуется её не использовать. Синтаксис
toWeek(datetime[, mode[, time_zone]])
Псевдонимы: week Аргументы
  • datetime — Дата или дата и время, для которых нужно получить номер недели. Date или DateTime
  • mode — Необязательно. Режим от 0 до 9 определяет первый день недели и диапазон номеров недель. По умолчанию 0. - time_zone — Необязательно. Часовой пояс. String
Возвращаемое значение Возвращает номер недели в соответствии с указанным режимом. UInt32 Примеры Получение номеров недель в разных режимах
Query
SELECT toDate('2016-12-27') AS date, toWeek(date) AS week0, toWeek(date,1) AS week1, toWeek(date,9) AS week9
Response
┌───────date─┬─week0─┬─week1─┬─week9─┐
│ 2016-12-27 │    52 │    52 │     1 │
└────────────┴───────┴───────┴───────┘

toYYYYMM

Добавленный в: v1.1.0 Преобразует дату или дату и время в число UInt32, содержащее год и номер месяца (YYYY * 100 + MM). Принимает второй необязательный аргумент — timezone. Если он указан, timezone должен быть строковой константой. Эта функция является обратной к функции YYYYMMDDToDate(). Синтаксис
toYYYYMM(datetime[, timezone])
Аргументы
  • datetime — дата или дата и время для преобразования. Date или Date32 или DateTime или DateTime64
  • timezone — необязательно. Часовой пояс для преобразования. Если указан, часовой пояс должен быть строковой константой. String
Возвращаемое значение Возвращает число типа UInt32, содержащее год и номер месяца (YYYY * 100 + MM). UInt32 Примеры Преобразование текущей даты в формат YYYYMM
Query
SELECT toYYYYMM(now(), 'US/Eastern')
Response
┌─toYYYYMM(now(), 'US/Eastern')─┐
│                        202303 │
└───────────────────────────────┘

toYYYYMMDD

Добавленный в: v1.1.0 Преобразует дату или дату и время в число UInt32, содержащее год, месяц и день (YYYY * 10000 + MM * 100 + DD). Принимает второй необязательный аргумент timezone. Если он указан, timezone должен быть строковой константой. Синтаксис
toYYYYMMDD(datetime[, timezone])
Аргументы
  • datetime — Дата или дата и время для преобразования. Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Часовой пояс, используемый при преобразовании. Если указан, часовой пояс должен быть строковой константой. String
Возвращаемое значение Возвращает число типа UInt32, содержащее год, месяц и день (YYYY * 10000 + MM * 100 + DD). UInt32 Примеры Преобразование текущей даты в формат YYYYMMDD
Query
SELECT toYYYYMMDD(now(), 'US/Eastern')
Response
┌─toYYYYMMDD(now(), 'US/Eastern')─┐
│                        20230302 │
└─────────────────────────────────┘

toYYYYMMDDhhmmss

Добавленный в: v1.1.0 Преобразует дату или дату и время в число UInt64, содержащее год, месяц, день, часы, минуты и секунды (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). Принимает необязательный второй аргумент — часовой пояс. Если он указан, часовой пояс должен быть строковой константой. Синтаксис
toYYYYMMDDhhmmss(datetime[, timezone])
Аргументы
  • datetime — Дата или дата и время для преобразования. Date или Date32 или DateTime или DateTime64
  • timezone — Необязательно. Часовой пояс для преобразования. Если указан, часовой пояс должен быть строковой константой. String
Возвращаемое значение Возвращает число UInt64, содержащее год, месяц, день, час, минуту и секунду (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). UInt64 Примеры Преобразование текущей даты и времени в формат YYYYMMDDhhmmss
Query
SELECT toYYYYMMDDhhmmss(now(), 'US/Eastern')
Response
┌─toYYYYMMDDhhmmss(now(), 'US/Eastern')─┐
│                        20230302112209 │
└───────────────────────────────────────┘

toYear

Добавленный в: v1.1.0 Возвращает компонент года (н. э.) из значения Date или DateTime. Синтаксис
toYear(datetime)
Псевдонимы: YEAR Аргументы
  • datetime — дата или дата и время, из которых нужно получить год. Date или Date32 или DateTime или DateTime64
Возвращаемое значение Возвращает год из указанного значения Date или DateTime UInt16 Примеры Пример использования
Query
SELECT toYear(toDateTime('2023-04-21 10:20:30'))
Response
┌─toYear(toDateTime('2023-04-21 10:20:30'))─┐
│                                     2023  │
└───────────────────────────────────────────┘

toYearNumSinceEpoch

Добавленный в: v25.3.0 Возвращает количество лет, прошедших с 1970 года Синтаксис
toYearNumSinceEpoch(date)
Аргументы
  • date — Дата или дата и время, которые нужно преобразовать. Date или DateTime или DateTime64
Возвращаемое значение Положительное целое число Примеры Пример
Query
SELECT toYearNumSinceEpoch(toDate('2024-10-01'))
Response
54

toYearWeek

Добавленный в: v20.1.0 Возвращает год и номер недели для даты. Год в результате может отличаться от года в аргументе даты для первой и последней недели года. Аргумент mode работает так же, как аргумент mode в toWeek(). Предупреждение: номер недели, возвращаемый toYearWeek(), может отличаться от значения, возвращаемого toWeek(). toWeek() всегда возвращает номер недели в контексте указанного года, и если toWeek() возвращает 0, toYearWeek() возвращает значение, соответствующее последней неделе предыдущего года. См. prev_yearWeek в примере ниже. Первый аргумент также может быть указан как String в формате, поддерживаемом parseDateTime64BestEffort(). Поддержка строковых аргументов существует только из соображений совместимости с MySQL, которая требуется некоторым сторонним инструментам. Поскольку в будущем поддержка строковых аргументов может зависеть от новых настроек совместимости с MySQL, а разбор строк сам по себе обычно медленный, рекомендуется их не использовать. Синтаксис
toYearWeek(datetime[, mode[, timezone]])
Псевдонимы: yearweek Аргументы
  • datetime — дата или дата и время, для которых нужно получить год и номер недели. Date или DateTime
  • mode — необязательно. Режим от 0 до 9 задаёт первый день недели и диапазон номеров недель. По умолчанию 0. - timezone — необязательно. Часовой пояс. String
Возвращаемое значение Возвращает год и номер недели в виде одного целочисленного значения. UInt32 Примеры Получение комбинаций год-неделя для разных режимов
Query
SELECT toDate('2016-12-27') AS date, toYearWeek(date) AS yearWeek0, toYearWeek(date,1) AS yearWeek1, toYearWeek(date,9) AS yearWeek9, toYearWeek(toDate('2022-01-01')) AS prev_yearWeek
Response
┌───────date─┬─yearWeek0─┬─yearWeek1─┬─yearWeek9─┬─prev_yearWeek─┐
│ 2016-12-27 │    201652 │    201652 │    201701 │        202152 │
└────────────┴───────────┴───────────┴───────────┴───────────────┘

today

Добавленный в: v1.1.0 Возвращает текущую дату на момент анализа запроса. То же, что и toDate(now()). Синтаксис
today()
Псевдонимы: curdate, current_date Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает текущую дату Date Примеры Пример использования
Query
SELECT today() AS today, curdate() AS curdate, current_date() AS current_date FORMAT Pretty
Response
┏━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃      today ┃    curdate ┃ current_date ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2025-03-03 │ 2025-03-03 │   2025-03-03 │
└────────────┴────────────┴──────────────┘
Синтаксис SQL без скобок по стандарту
Query
SELECT TODAY, CURDATE,CURRENT_DATE
Response
┏━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃      TODAY ┃    CURDATE ┃ CURRENT_DATE ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2025-03-04 │ 2025-03-04 │   2025-03-04 │
└────────────┴────────────┴──────────────┘

yesterday

Добавленный в: v1.1.0 Не принимает аргументов и возвращает вчерашнюю дату на одном из этапов анализа запроса. Синтаксис
yesterday()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает вчерашнюю дату. Date Примеры Получение вчерашней даты
Query
SELECT yesterday();
SELECT today() - 1;
Response
┌─yesterday()─┐
│  2025-06-09 │
└─────────────┘
┌─minus(today(), 1)─┐
│        2025-06-09 │
└───────────────────┘
Последнее изменение 10 июня 2026 г.