Большинство функций в этом разделе принимают необязательный аргумент — часовой пояс, например 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 │
└─────────────────────┴────────────┴────────────┴─────────────────────┘UTCTimestamp
Добавленный в: v22.11.0
Возвращает текущие дату и время на этапе анализа запроса. Функция является константным выражением.
Эта функция возвращает тот же результат, что и now('UTC'). Она была добавлена только для поддержки MySQL. Предпочтительно использовать now.
Синтаксис
UTCTimestamp()Псевдонимы: UTC_timestamp
Аргументы
- Нет.
Возвращаемое значение
Возвращает текущие дату и время на этапе анализа запроса. DateTime
Примеры
Получение текущей временной метки UTC
SELECT UTCTimestamp()┌──────UTCTimestamp()─┐
│ 2024-05-28 08:32:09 │
└─────────────────────┘YYYYMMDDToDate
Добавленный в: v23.9.0
Преобразует число, содержащее год, месяц и день, в Date.
Эта функция обратна функции toYYYYMMDD().
Результат не определён, если входное значение не кодирует корректное значение Date.
Синтаксис
YYYYMMDDToDate(YYYYMMDD)Аргументы
Возвращаемое значение
Возвращает значение типа Date, сформированное из переданных аргументов Date
Примеры
Пример
SELECT YYYYMMDDToDate(20230911);┌─YYYYMMDDToDate(20230911)─┐
│ 2023-09-11 │
└──────────────────────────┘YYYYMMDDToDate32
Добавленный в: v23.9.0
Преобразует число, содержащее год, месяц и день, в Date32.
Эта функция является обратной для toYYYYMMDD().
Результат не определён, если входное значение не кодирует корректное значение Date32.
Синтаксис
YYYYMMDDToDate32(YYYYMMDD)Аргументы
Возвращаемое значение
Возвращает значение Date32 из указанных аргументов Date32
Примеры
Пример
SELECT YYYYMMDDToDate32(20000507);┌─YYYYMMDDToDate32(20000507)─┐
│ 2000-05-07 │
└────────────────────────────┘YYYYMMDDhhmmssToDateTime
Добавленный в: v23.9.0
Преобразует число, содержащее год, месяц, день, час, минуту и секунду, в DateTime.
Эта функция является обратной к функции toYYYYMMDDhhmmss().
Результат не определён, если входное значение не кодирует корректное значение DateTime.
Синтаксис
YYYYMMDDhhmmssToDateTime(YYYYMMDDhhmmss[, timezone])Аргументы
YYYYMMDDhhmmss— Число, содержащее год, месяц, день, час, минуту и секунду.(U)Int*илиFloat*илиDecimaltimezone— Название часового пояса.String
Возвращаемое значение
Возвращает значение DateTime из указанных аргументов DateTime
Примеры
Пример
SELECT YYYYMMDDhhmmssToDateTime(20230911131415);┌─YYYYMMDDhhmmssToDateTime(20230911131415)─┐
│ 2023-09-11 13:14:15 │
└──────────────────────────────────────────┘YYYYMMDDhhmmssToDateTime64
Добавленный в: v23.9.0
Преобразует число, содержащее год, месяц, день, час, минуту и секунду, в DateTime64.
Эта функция является обратной по отношению к функции toYYYYMMDDhhmmss().
Результат не определён, если входное значение не кодирует допустимое значение DateTime64.
Синтаксис
YYYYMMDDhhmmssToDateTime64(YYYYMMDDhhmmss[, precision[, timezone]])Аргументы
YYYYMMDDhhmmss— Число, содержащее год, месяц, день, часы, минуты и секунды.(U)Int*илиFloat*илиDecimalprecision— Точность дробной части (0-9).UInt8timezone— Название часового пояса.String
Возвращаемое значение
Возвращает значение DateTime64 на основе переданных аргументов DateTime64
Примеры
Пример
SELECT YYYYMMDDhhmmssToDateTime64(20230911131415, 3, 'Asia/Istanbul');┌─YYYYMMDDhhmmssToDateTime64(20230911131415, 3, 'Asia/Istanbul')─┐
│ 2023-09-11 13:14:15.000 │
└────────────────────────────────────────────────────────────────┘addDate
Добавленный в: v23.9.0
Добавляет интервал времени к указанной дате, дате и времени либо к дате или дате и времени, представленным в виде строки. Если в результате сложения получается значение, выходящее за пределы допустимого диапазона типа данных, результат не определён.
Синтаксис
addDate(datetime, interval)Аргументы
datetime— дата или дата и время, к которым добавляетсяinterval.DateилиDate32илиDateTimeилиDateTime64илиStringinterval— интервал, который нужно добавить.Interval
Возвращаемое значение
Возвращает дату или дату и время, полученные в результате добавления interval к datetime. Date или Date32 или DateTime или DateTime64
Примеры
Добавление интервала к дате
SELECT addDate(toDate('2018-01-01'), INTERVAL 3 YEAR)┌─addDate(toDate('2018-01-01'), toIntervalYear(3))─┐
│ 2021-01-01 │
└──────────────────────────────────────────────────┘addDays
Добавленный в: v1.1.0
Добавляет указанное количество дней к дате, дате и времени или строковому представлению даты либо даты и времени.
Синтаксис
addDays(datetime, num)Аргументы
datetime— дата или дата и время, к которым нужно добавить указанное количество дней.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество дней, которое нужно добавить.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime с добавленными num днями. Date или Date32 или DateTime или DateTime64
Примеры
Добавление дней к значениям разных типов даты
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 day)┌─plus(CAST('1998-06-16', 'Date'), toIntervalDay(10))─┐
│ 1998-06-26 │
└─────────────────────────────────────────────────────┘addHours
Добавленный в: v1.1.0
Добавляет указанное количество часов к дате, дате и времени или строковому представлению даты или даты и времени.
Синтаксис
addHours(datetime, num)Аргументы
datetime— дата или дата и время, к которым нужно добавить указанное количество часов.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество часов, которое нужно добавить.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавленными num часами. DateTime или DateTime64(3)
Примеры
Добавление часов к различным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 hour)┌─plus(CAST('1998-06-16', 'Date'), toIntervalHour(10))─┐
│ 1998-06-16 10:00:00 │
└──────────────────────────────────────────────────────┘addInterval
Добавленный в: v22.11.0
Добавляет интервал к другому интервалу или кортежу интервалов.
Синтаксис
addInterval(interval_1, interval_2)Аргументы
interval_1— Первый интервал или кортеж интервалов.IntervalилиTuple(Interval)interval_2— Второй добавляемый интервал.Interval
Возвращаемое значение
Возвращает кортеж интервалов Tuple(Interval)
Примеры
Добавление интервалов
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)┌─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илиStringnum— Количество добавляемых микросекунд.(U)Int*илиFloat*
Возвращаемое значение
Возвращает date_time, увеличенное на num микросекунд DateTime64
Примеры
Добавление микросекунд к различным типам даты и времени
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┌─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
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 microsecond)┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalMicrosecond(10))─┐
│ 1998-06-16 00:00:00.000010 │
└─────────────────────────────────────────────────────────────────┘addMilliseconds
Добавленный в: v22.6.0
Добавляет указанное количество миллисекунд к значению типа дата и время или к значению даты и времени, представленному в виде строки.
Синтаксис
addMilliseconds(datetime, num)Аргументы
datetime— Дата и время, к которым нужно добавить указанное количество миллисекунд.DateTimeилиDateTime64илиStringnum— Количество миллисекунд, которое нужно добавить.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавлением num миллисекунд. DateTime64
Примеры
Добавление миллисекунд к различным типам даты и времени
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┌─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
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 10 millisecond)┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalMillisecond(10))─┐
│ 1998-06-16 00:00:00.010 │
└─────────────────────────────────────────────────────────────────┘addMinutes
Добавленный в: v1.1.0
Добавляет указанное количество минут к дате, дате и времени или дате либо дате и времени, представленным в виде строки.
Синтаксис
addMinutes(datetime, num)Аргументы
datetime— дата или дата и время, к которым добавляется указанное количество минут.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество минут для добавления.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавленными num минутами. DateTime или DateTime64(3)
Примеры
Добавление минут к различным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 minute)┌─plus(CAST('1998-06-16', 'Date'), toIntervalMinute(10))─┐
│ 1998-06-16 00:10:00 │
└────────────────────────────────────────────────────────┘addMonths
Добавленный в: v1.1.0
Добавляет указанное количество месяцев к дате, дате и времени или строковому представлению даты либо даты и времени.
Синтаксис
addMonths(datetime, num)Аргументы
datetime— дата или дата и время, к которым добавляется указанное количество месяцев.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество добавляемых месяцев.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime плюс num месяцев. Date или Date32 или DateTime или DateTime64
Примеры
Добавление месяцев к разным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 month)┌─plus(CAST('1998-06-16', 'Date'), toIntervalMonth(10))─┐
│ 1999-04-16 │
└───────────────────────────────────────────────────────┘addNanoseconds
Добавленный в: v22.6.0
Добавляет указанное количество наносекунд к значению типа «дата и время» или к дате и времени, заданным строкой.
Синтаксис
addNanoseconds(datetime, num)Аргументы
datetime— Дата и время, к которым нужно добавить указанное количество наносекунд.DateTimeилиDateTime64илиStringnum— Количество добавляемых наносекунд.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавленными num наносекундами DateTime64
Примеры
Добавление наносекунд к различным типам даты и времени
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┌─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
SELECT dateAdd('1998-06-16'::DateTime, INTERVAL 1000 nanosecond)┌─plus(CAST('1998-06-16', 'DateTime'), toIntervalNanosecond(1000))─┐
│ 1998-06-16 00:00:00.000001000 │
└──────────────────────────────────────────────────────────────────┘addQuarters
Добавленный в: v20.1.0
Добавляет указанное количество кварталов к дате, дате и времени или строковому представлению даты либо даты и времени.
Синтаксис
addQuarters(datetime, num)Аргументы
datetime— Дата или дата и время, к которым нужно добавить указанное количество кварталов.DateилиDate32илиDateTimeилиDateTime64илиStringnum— Количество кварталов, которое нужно добавить.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавленными num кварталами. Date или Date32 или DateTime или DateTime64
Примеры
Добавление кварталов к значениям разных типов дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 quarter)┌─plus(CAST('1998-06-16', 'Date'), toIntervalQuarter(10))─┐
│ 2000-12-16 │
└─────────────────────────────────────────────────────────┘addSeconds
Добавленный в: v1.1.0
Добавляет указанное количество секунд к дате, дате и времени или к строковому представлению даты либо даты и времени.
Синтаксис
addSeconds(datetime, num)Аргументы
datetime— Дата или дата и время, к которым добавляется указанное количество секунд.DateилиDate32илиDateTimeилиDateTime64илиStringnum— Количество добавляемых секунд.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime с добавленными num секундами. DateTime или DateTime64(3)
Примеры
Добавление секунд к различным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 second)┌─plus(CAST('1998-06-16', 'Date'), toIntervalSecond(10))─┐
│ 1998-06-16 00:00:10 │
└────────────────────────────────────────────────────────┘addTupleOfIntervals
Добавленный в: v22.11.0
Последовательно добавляет кортеж интервалов к дате или дате и времени.
Синтаксис
addTupleOfIntervals(datetime, intervals)Аргументы
datetime— дата или дата и время, к которым нужно добавить интервалы.DateилиDate32илиDateTimeилиDateTime64intervals— кортеж интервалов, которые нужно добавить кdatetime.Tuple(Interval)
Возвращаемое значение
Возвращает date с добавленными intervals: Date или Date32 или DateTime или DateTime64
Примеры
Добавление кортежа интервалов к дате
WITH toDate('2018-01-01') AS date
SELECT addTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 MONTH, INTERVAL 1 YEAR))┌─addTupleOfIntervals(date, (toIntervalDay(1), toIntervalMonth(1), toIntervalYear(1)))─┐
│ 2019-02-02 │
└──────────────────────────────────────────────────────────────────────────────────────┘addWeeks
Добавленный в: v1.1.0
Добавляет указанное количество недель к дате, дате и времени или дате либо дате и времени, представленным в виде строки.
Синтаксис
addWeeks(datetime, num)Аргументы
datetime— дата или дата и время, к которым нужно добавить указанное количество недель.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество недель, которое нужно добавить.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime с добавленными num неделями. Date или Date32 или DateTime или DateTime64
Примеры
Добавление недель к разным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 week)┌─plus(CAST('1998-06-16', 'Date'), toIntervalWeek(10))─┐
│ 1998-08-25 │
└──────────────────────────────────────────────────────┘addYears
Добавленный в: v1.1.0
Добавляет указанное количество лет к дате, дате и времени или строковому представлению даты либо даты и времени.
Синтаксис
addYears(datetime, num)Аргументы
datetime— Дата или дата и время, к которым нужно добавить указанное количество лет.DateилиDate32илиDateTimeилиDateTime64илиStringnum— Количество добавляемых лет.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime с добавленными num годами. Date или Date32 или DateTime или DateTime64
Примеры
Добавление лет к различным типам дат
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┌─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
SELECT dateAdd('1998-06-16'::Date, INTERVAL 10 year)┌─plus(CAST('1998-06-16', 'Date'), toIntervalYear(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— Тип интервала результата.
| Единица | Возможные значения |
|---|---|
| nanosecond | nanosecond, nanoseconds, ns |
| microsecond | microsecond, microseconds, us, u |
| millisecond | millisecond, milliseconds, ms |
| second | second, seconds, ss, s |
| minute | minute, minutes, mi, n |
| hour | hour, hours, hh, h |
| day | day, days, dd, d |
| week | week, weeks, wk, ww |
| month | month, months, mm, m |
| quarter | quarter, quarters, qq, q |
| year | year, years, yyyy, yy |
startdate— Первое значение времени для вычитания (вычитаемое).DateилиDate32илиDateTimeилиDateTime64enddate— Второе значение времени, из которого вычитается первое (уменьшаемое).DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Название часового пояса. Если указано, применяется и к startdate, и к enddate. Если не указано, используются часовые пояса startdate и enddate. Если они не совпадают, результат не определён.String
Возвращаемое значение
Возвращает разность между enddate и startdate, выраженную в единицах unit. Int32
Примеры
Расчёт возраста в часах
SELECT age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))┌─age('hour', toDateTime('2018-01-01 22:30:00'), toDateTime('2018-01-02 23:00:00'))─┐
│ 24 │
└───────────────────────────────────────────────────────────────────────────────────┘Расчет возраста в разных единицах
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┌──────────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илиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым значением часа. Date или Date32 или DateTime или DateTime64
Примеры
Пример использования
SELECT changeDay('2024-01-31'::DateTime, 15)2024-01-15 00:00:00changeHour
Добавленный в: v24.7.0
Изменяет компонент часа в значении типа Date или DateTime.
Синтаксис
changeHour(date_or_datetime, value)Аргументы
date_or_datetime— Значение, которое требуется изменить.DateилиDate32илиDateTimeилиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом часа. DateTime или DateTime64
Примеры
Пример использования
SELECT changeHour('2024-01-01 12:00:00'::DateTime, 5)2024-01-01 05:00:00changeMinute
Добавленный в: v24.7.0
Изменяет компонент минут в значении Date или DateTime.
Синтаксис
changeMinute(date_or_datetime, value)Аргументы
date_or_datetime— Значение, которое нужно изменить.DateилиDate32илиDateTimeилиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым значением минут. DateTime или DateTime64
Примеры
Пример использования
SELECT changeMinute('2024-01-01 12:30:00'::DateTime, 45)2024-01-01 12:45:00changeMonth
Добавленный в: v24.7.0
Изменяет компонент месяца в значении типа Date или DateTime.
Синтаксис
changeMonth(date_or_datetime, value)Аргументы
date_or_datetime— Значение, которое требуется изменить.DateилиDate32илиDateTimeилиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом месяца. Date или Date32 или DateTime или DateTime64
Примеры
Пример использования
SELECT changeMonth('2024-01-01'::DateTime, 12)2024-12-01 00:00:00changeSecond
Добавленный в: v24.7.0
Изменяет значение секунд в Date или DateTime.
Синтаксис
changeSecond(date_or_datetime, value)Аргументы
date_or_datetime— Значение, которое нужно изменить.DateилиDate32илиDateTimeилиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым значением секунд. DateTime или DateTime64
Примеры
Пример использования
SELECT changeSecond('2024-01-01 12:30:45'::DateTime, 15)2024-01-01 12:30:15changeYear
Добавленный в: v24.7.0
Изменяет год у значения типа Date или DateTime.
Синтаксис
changeYear(date_or_datetime, value)Аргументы
date_or_datetime— Значение, которое нужно изменить.DateилиDate32илиDateTimeилиDateTime64value— Новое значение.(U)Int*
Возвращаемое значение
Возвращает значение того же типа, что и date_or_datetime, с изменённым компонентом года. Date или Date32 или DateTime или DateTime64
Примеры
Пример использования
SELECT changeYear('2024-01-01'::DateTime, 2023)2023-01-01 00:00:00dateDiff
Добавленный в: 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 | Возможные значения |
|---|---|
| nanosecond | nanosecond, nanoseconds, ns |
| microsecond | microsecond, microseconds, us, u |
| millisecond | millisecond, milliseconds, ms |
| second | second, seconds, ss, s |
| minute | minute, minutes, mi, n |
| hour | hour, hours, hh, h |
| day | day, days, dd, d |
| week | week, weeks, wk, ww |
| month | month, months, mm, m |
| quarter | quarter, quarters, qq, q |
| year | year, years, yyyy, yy |
startdate— Первое значение времени, которое вычитается (вычитаемое).DateилиDate32илиDateTimeилиDateTime64enddate— Второе значение времени, из которого выполняется вычитание (уменьшаемое).DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Имя часового пояса. Если указано, оно применяется и кstartdate, и кenddate. Если не указано, используются часовые поясаstartdateиenddate. Если они различаются, результат не определён.String
Возвращаемое значение
Возвращает разницу между enddate и startdate, выраженную в unit. Int64
Примеры
Расчёт разницы между датами в часах
SELECT dateDiff('hour', toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res┌─res─┐
│ 25 │
└─────┘Вычислить разницу между датами в разных единицах
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┌──────────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— Часть даты, которую требуется извлечь.Stringdatetime— Значение типа дата или дата и время.DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Часовой пояс.String
Возвращаемое значение
Возвращает указанную часть даты. String
Примеры
Извлечение различных частей даты
WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT
dateName('year', date_value),
dateName('month', date_value),
dateName('day', date_value)┌─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.Stringdatetime— Дата и время.DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Имя часового пояса для возвращаемого значения даты и времени. Если не указан, функция использует часовой пояс параметраdatetime.String
Возвращаемое значение
Возвращает усечённое значение даты и времени.
| Аргумент unit | Аргумент datetime |
Тип возвращаемого значения |
|---|---|---|
| Год, квартал, месяц, неделя | Date32 или DateTime64 или Date или DateTime |
Date32 или Date |
| День, час, минута, секунда | Date32, DateTime64, Date или DateTime |
DateTime64 или DateTime |
| Миллисекунда, микросекунда, | Любой | DateTime64 |
| Наносекунда | со scale 3, 6 или 9 |
Примеры
Усечение без указания часового пояса
SELECT now(), dateTrunc('hour', now());┌───────────────now()─┬─dateTrunc('hour', now())──┐
│ 2020-09-28 10:40:45 │ 2020-09-28 10:00:00 │
└─────────────────────┴───────────────────────────┘Усечение с указанием часового пояса
SELECT now(), dateTrunc('hour', now(), 'Asia/Istanbul');┌───────────────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.
Поля замены:
| Placeholder | Description | Example |
|---|---|---|
| %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/%y | 01/02/18 |
| %e | день месяца с дополнением пробелом (1-31) | 2 |
| %f | дробная часть секунды | 123456 |
| %F | краткая дата в формате YYYY-MM-DD, эквивалентно %Y-%m-%d | 2018-01-02 |
| %g | двузначный год по ISO 8601 | 18 |
| %G | четырёхзначный год для номера недели по ISO | 2018 |
| %h | час в 12-часовом формате (01-12) | 09 |
| %H | час в 24-часовом формате (00-23) | 22 |
| %i | минуты (00-59) | 33 |
| %I | час в 12-часовом формате (01-12) | 10 |
| %j | день года (001-366) | 002 |
| %k | час в 24-часовом формате (00-23) | 14 |
| %l | час в 12-часовом формате (01-12) | 09 |
| %m | месяц в виде целого числа (01-12) | 01 |
| %M | полное название месяца (January-December) | January |
| %n | символ новой строки | |
| %p | обозначение AM или PM | PM |
| %Q | квартал (1-4) | 1 |
| %r | время в 12-часовом формате HH:MM AM/PM, эквивалентно %h:%i %p | 10:30 PM |
| %R | время в 24-часовом формате HH:MM, эквивалентно %H:%i | 22:33 |
| %s | секунды (00-59) | 44 |
| %S | секунды (00-59) | 44 |
| %t | символ горизонтальной табуляции | |
| %T | время в формате ISO 8601 (HH:MM:SS), эквивалентно %H:%i:%S | 22:33:44 |
| %u | день недели по ISO 8601 в виде числа, где понедельник = 1 (1-7) | 2 |
| %V | номер недели по ISO 8601 (01-53) | 01 |
| %w | день недели в виде целого числа, где воскресенье = 0 (0-6) | 2 |
| %W | полное название дня недели (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 для форматирования.DateorDate32orDateTimeorDateTime64format— Строка формата с полями замены.Stringtimezone— Необязательно. Имя часового пояса для форматируемого времени.String
Возвращаемое значение
Возвращает значение даты и времени в указанном формате. String
Примеры
Форматирование даты с плейсхолдером года
SELECT formatDateTime(toDate('2010-01-04'), '%g')┌─formatDateTime(toDate('2010-01-04'), '%g')─┐
│ 10 │
└────────────────────────────────────────────┘Форматирование DateTime64 с долями секунды
SELECT formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')┌─formatDateTime(toDateTime64('2010-01-04 12:34:56.123456', 7), '%f')─┐
│ 123456 │
└─────────────────────────────────────────────────────────────────────┘Формат с часовым поясом
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┌──────────────────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илиDateTime64format— Строка формата с полями замены в стиле Joda.Stringtimezone— Необязательно. Имя часового пояса для форматируемых даты и времени.String
Возвращаемое значение
Возвращает значения даты и времени в соответствии с указанным форматом. String
Примеры
Форматирование datetime с помощью синтаксиса Joda
SELECT formatDateTimeInJodaSyntax(toDateTime('2010-01-04 12:34:56'), 'yyyy-MM-dd HH:mm:ss')┌─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
Примеры
Преобразование числа дней с нулевого года в даты
SELECT
fromDaysSinceYearZero(739136) AS date1,
fromDaysSinceYearZero(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2┌──────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
Примеры
Преобразование дней с начала нулевого года в даты
SELECT
fromDaysSinceYearZero32(739136) AS date1,
fromDaysSinceYearZero32(toDaysSinceYearZero(toDate('2023-09-08'))) AS date2┌──────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
Примеры
Преобразование модифицированного юлианского дня в дату
SELECT fromModifiedJulianDay(58849)┌─fromModifiedJulianDay(58849)─┐
│ 2020-01-01 │
└──────────────────────────────┘fromModifiedJulianDayOrNull
Добавленный в: v21.1.0
Аналогично fromModifiedJulianDay(), но вместо вызова Исключения возвращает NULL.
Синтаксис
fromModifiedJulianDayOrNull(day)Аргументы
day— номер модифицированного юлианского дня.(U)Int*
Возвращаемое значение
Возвращает дату в текстовом виде для корректного аргумента day, в противном случае — null. Nullable(String)
Примеры
Преобразование модифицированного юлианского дня в дату с обработкой null
SELECT fromModifiedJulianDayOrNull(58849);
SELECT fromModifiedJulianDayOrNull(60000000); -- invalid argument, returns NULL┌─fromModifiedJulianDayOrNull(58849)─┐
│ 2020-01-01 │
└────────────────────────────────────┘
┌─fromModifiedJulianDayOrNull(60000000)─┐
│ ᴺᵁᴸᴸ │
└───────────────────────────────────────┘fromUTCTimestamp
Добавленный в: v22.1.0
Преобразует значение типа дата или дата и время из часового пояса UTC в значение типа дата или дата и время в указанном часовом поясе. Эта функция в основном предназначена для совместимости с Apache Spark и аналогичными фреймворками.
Синтаксис
fromUTCTimestamp(datetime, time_zone)Псевдонимы: from_utc_timestamp
Аргументы
datetime— Константное значение даты или даты и времени либо выражение.DateTimeилиDateTime64time_zone— Константное значение типа String или выражение, задающее часовой пояс.String
Возвращаемое значение
Возвращает DateTime/DateTime64 в указанном часовом поясе. DateTime или DateTime64
Примеры
Преобразование времени из часового пояса UTC в указанный часовой пояс
SELECT fromUTCTimestamp(toDateTime64('2023-03-16 10:00:00', 3), 'Asia/Shanghai')┌─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илиDateTime64format— Необязательно. Константная строка формата для форматирования вывода.Stringtimezone— Необязательно. Константная строка часового пояса.String
Возвращаемое значение
Возвращает DateTime, если вызвана с одним аргументом, или String, если вызвана с двумя или тремя аргументами. DateTime или String
Примеры
Преобразование Unix-временной метки в DateTime
SELECT fromUnixTimestamp(423543535)┌─fromUnixTimestamp(423543535)─┐
│ 1983-06-04 02:58:55 │
└──────────────────────────────┘Преобразование Unix-временной метки с указанием формата
SELECT fromUnixTimestamp(1234334543, '%Y-%m-%d %R:%S') AS DateTime┌─DateTime────────────┐
│ 2009-02-11 06: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илиDateTime64format— Необязательно. Константная строка формата в синтаксисе Joda для форматирования вывода.Stringtimezone— Необязательно. Константная строка часового пояса.String
Возвращаемое значение
Возвращает дату и время при вызове с одним аргументом или строку при вызове с двумя или тремя аргументами.} DateTime или String
Примеры
Преобразование Unix-временной метки в формате Joda
SELECT fromUnixTimestampInJodaSyntax(1234334543, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS DateTime┌─DateTime────────────┐
│ 2009-02-11 06:42:23 │
└─────────────────────┘localtime
Добавленный в: v26.7.0
Возвращает текущее время суток в часовом поясе сервера (или сеанса) на момент анализа запроса.
Функция является константным выражением. Это стандартный для SQL / PostgreSQL LOCALTIME, эквивалентный CAST(now() AS Time).
Синтаксис
localtime()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает текущее время суток. Time
Примеры
Стандартный синтаксис SQL без скобок
SELECT LOCALTIME┌───────LOCALTIME─┐
│ 07:42:09 │
└─────────────────┘makeDate
Добавленный в: v22.6.0
Создаёт Date на основе:
- года, месяца и дня
- года и порядкового дня в году
Синтаксис
makeDate(year, month, day)
makeDate(year, day_of_year)Аргументы
year— Номер года.(U)Int*илиFloat*илиDecimalmonth— Номер месяца (1-12).(U)Int*илиFloat*илиDecimalday— День месяца (1-31).(U)Int*илиFloat*илиDecimalday_of_year— Порядковый день года (1-365).(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает значение типа Date, сформированное из указанных аргументов Date
Примеры
Date из года, месяца и дня
SELECT makeDate(2023, 2, 28) AS date;┌───────date─┐
│ 2023-02-28 │
└────────────┘Дата по году и дню года
SELECT makeDate(2023, 42) AS date;┌───────date─┐
│ 2023-02-11 │
└────────────┘makeDate32
Добавленный в: v22.6.0
Создаёт Date32, используя:
- год, месяц и день
- год и день года
Синтаксис
makeDate32(year, month, day)
makeDate32(year, day_of_year)Аргументы
year— Номер года.(U)Int*илиFloat*илиDecimalmonth— Номер месяца (1-12).(U)Int*илиFloat*илиDecimalday— День в месяце (1-31).(U)Int*илиFloat*илиDecimalday_of_year— День года (1-365).(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает значение Date32, созданное на основе переданных аргументов Date32
Примеры
Date32 из года, месяца и дня
SELECT makeDate(2023, 2, 28) AS date;┌───────date─┐
│ 2023-02-28 │
└────────────┘Date32 из года и номера дня в году
SELECT makeDate(2023, 42) AS date;┌───────date─┐
│ 2023-02-11 │
└────────────┘makeDateTime
Добавленный в: v22.6.0
Создаёт значение DateTime из года, месяца, дня, часа, минуты и секунды с необязательным часовым поясом.
Синтаксис
makeDateTime(year, month, day, hour, minute, second[, timezone])Аргументы
year— Год.(U)Int*илиFloat*илиDecimalmonth— Номер месяца (1-12).(U)Int*илиFloat*илиDecimalday— День месяца (1-31).(U)Int*илиFloat*илиDecimalhour— Час (0-23).(U)Int*илиFloat*илиDecimalminute— Минута (0-59).(U)Int*илиFloat*илиDecimalsecond— Секунда (0-59).(U)Int*илиFloat*илиDecimaltimezone— Имя часового пояса.String
Возвращаемое значение
Возвращает значение DateTime, сформированное из указанных аргументов DateTime
Примеры
DateTime из года, месяца, дня, часа, минуты и секунды
SELECT makeDateTime(2023, 2, 28, 17, 12, 33) AS DateTime;┌────────────DateTime─┐
│ 2023-02-28 17:12:33 │
└─────────────────────┘makeDateTime64
Добавленный в: v22.6.0
Создаёт DateTime64 из года, месяца, дня, часа, минуты и секунды с необязательной дробной частью, точностью и часовым поясом.
Синтаксис
makeDateTime64(year, month, day, hour, minute, second[, fraction[, precision[, timezone]]])Аргументы
year— Номер года.(U)Int*илиFloat*илиDecimalmonth— Номер месяца (1-12).(U)Int*илиFloat*илиDecimalday— День месяца (1-31).(U)Int*илиFloat*илиDecimalhour— Час (0-23).(U)Int*илиFloat*илиDecimalminute— Минута (0-59).(U)Int*илиFloat*илиDecimalsecond— Секунда (0-59).(U)Int*илиFloat*илиDecimalfraction— Дробная часть секунды.(U)Int*илиFloat*илиDecimalprecision— Точность дробной части (0-9).UInt8timezone— Имя часового пояса.String
Возвращаемое значение
Возвращает значение DateTime64, сформированное из указанных аргументов DateTime64
Примеры
DateTime64 из года, месяца, дня, часа, минуты, секунды
SELECT makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5);┌─makeDateTime64(2023, 5, 15, 10, 30, 45, 779, 5)─┐
│ 2023-05-15 10:30:45.00779 │
└─────────────────────────────────────────────────┘monthName
Добавленный в: v22.1.0
Возвращает название месяца в виде строки из значения типа «дата» или «дата и время».
Синтаксис
monthName(datetime)Аргументы
datetime— дата или дата и время.DateилиDate32, илиDateTime, илиDateTime64
Возвращаемое значение
Возвращает название месяца. String
Примеры
Получить название месяца из даты
WITH toDateTime('2021-04-14 11:22:33') AS date_value
SELECT monthName(date_value)┌─monthName(date_value)─┐
│ April │
└───────────────────────┘now
Добавленный в: v1.1.0
Возвращает текущие дату и время на момент анализа запроса. Эта функция является константным выражением.
Синтаксис
now([timezone])Псевдонимы: localtimestamp, current_timestamp
Аргументы
timezone— Необязательный. Имя часового пояса для возвращаемого значения.String
Возвращаемое значение
Возвращает текущие дату и время. DateTime
Примеры
Запрос без указания часового пояса
SELECT now()┌───────────────now()─┐
│ 2020-10-17 07:42:09 │
└─────────────────────┘Запрос с указанным часовым поясом
SELECT now('Asia/Istanbul')┌─now('Asia/Istanbul')─┐
│ 2020-10-17 10:42:23 │
└──────────────────────┘Стандартный синтаксис SQL без скобок
SELECT NOW, CURRENT_TIMESTAMP┌─────────────────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 — наносекунды.UInt8timezone— Необязательный. Имя часового пояса для возвращаемого значения.String
Возвращаемое значение
Возвращает текущие дату и время с точностью до долей секунды. DateTime64
Примеры
Запрос со стандартной и пользовательской точностью
SELECT now64(), now64(9, 'Asia/Istanbul')┌─────────────────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()
SELECT
now(),
nowInBlock(),
sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock┌───────────────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 (наносекунды).UInt8timezone— Необязательный. Имя часового пояса для возвращаемого значения.String
Возвращаемое значение
Возвращает текущие дату и время на момент обработки каждого блока данных с точностью до долей секунды. DateTime64
Примеры
Отличие от функции now64()
SELECT
now64(),
nowInBlock64(),
sleep(1)
FROM numbers(3)
SETTINGS max_block_size = 1
FORMAT PrettyCompactMonoBlock┌─────────────────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
Примеры
Пример использования
SELECT serverTimeZone()┌─serverTimeZone()─┐
│ Etc/UTC │
└──────────────────┘subDate
Добавленный в: v23.9.0
Вычитает интервал времени из указанной даты, даты и времени или даты либо даты и времени в строковом формате. Если в результате вычитания получается значение, выходящее за пределы типа данных, результат не определён.
Синтаксис
subDate(datetime, interval)Аргументы
datetime— Дата или дата и время, из которого вычитаетсяinterval.DateorDate32orDateTimeorDateTime64interval— Интервал, который нужно вычесть.Interval
Возвращаемое значение
Возвращает дату или дату и время, полученные в результате вычитания interval из datetime. Date or Date32 or DateTime or DateTime64
Примеры
Вычитание интервала из даты
SELECT subDate(toDate('2018-01-01'), INTERVAL 3 YEAR)┌─subDate(toDate('2018-01-01'), toIntervalYear(3))─┐
│ 2015-01-01 │
└──────────────────────────────────────────────────┘subtractDays
Добавленный в: v1.1.0
Вычитает указанное количество дней из даты, даты и времени или даты либо даты и времени в строковом формате.
Синтаксис
subtractDays(datetime, num)Аргументы
datetime— дата или дата и время, из которых вычитается указанное количество дней.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество дней, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime за вычетом num дней Date или Date32 или DateTime или DateTime64
Примеры
Вычитание дней из значений разных типов даты
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 day)┌─minus(CAST('1998-06-16', 'Date'), toIntervalDay(10))─┐
│ 1998-06-06 │
└──────────────────────────────────────────────────────┘subtractHours
Добавленный в: v1.1.0
Вычитает указанное количество часов из даты, даты и времени или даты либо даты и времени в строковом формате.
Синтаксис
subtractHours(datetime, num)Аргументы
datetime— Дата или дата и время, из которой нужно вычесть указанное количество часов.DateилиDate32илиDateTimeилиDateTime64илиStringnum— Количество часов, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime за вычетом num часов: DateTime или DateTime64(3)
Примеры
Вычитание часов из значений разных типов даты
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 hour)┌─minus(CAST('1998-06-16', 'Date'), toIntervalHour(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)
Примеры
Вычитание интервалов
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);┌─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илиStringnum— Количество микросекунд, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime за вычетом num микросекунд. DateTime64
Примеры
Вычитание микросекунд из значений разных типов даты и времени
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┌─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
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 microsecond)┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalMicrosecond(10))─┐
│ 1998-06-15 23:59:59.999990 │
└──────────────────────────────────────────────────────────────────┘subtractMilliseconds
Добавленный в: v22.6.0
Вычитает указанное количество миллисекунд из значения типа «дата и время» или из даты и времени, представленных в виде строки.
Синтаксис
subtractMilliseconds(datetime, num)Аргументы
datetime— Дата и время, из которых нужно вычесть указанное количество миллисекунд.DateTimeилиDateTime64, либоStringnum— Количество миллисекунд для вычитания.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime за вычетом num миллисекунд. DateTime64
Примеры
Вычитание миллисекунд из различных типов даты и времени
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┌─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
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 millisecond)┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalMillisecond(10))─┐
│ 1998-06-15 23:59:59.990 │
└──────────────────────────────────────────────────────────────────┘subtractMinutes
Добавленный в: v1.1.0
Вычитает указанное количество минут из даты, даты и времени или из строки, представляющей дату либо дату и время.
Синтаксис
subtractMinutes(datetime, num)Аргументы
datetime— дата или дата и время, из которых нужно вычесть указанное количество минут.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество минут, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает значение datetime за вычетом num минут. DateTime или DateTime64(3)
Примеры
Вычитание минут из значений разных типов даты
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 minute)┌─minus(CAST('1998-06-16', 'Date'), toIntervalMinute(10))─┐
│ 1998-06-15 23:50:00 │
└─────────────────────────────────────────────────────────┘subtractMonths
Добавленный в: v1.1.0
Вычитает указанное количество месяцев из даты, даты и времени или строки с датой либо датой и временем.
Синтаксис
subtractMonths(datetime, num)Аргументы
datetime— дата или дата и время, из которых нужно вычесть указанное количество месяцев.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество месяцев, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime минус num месяцев. Date или Date32 или DateTime или DateTime64
Примеры
Вычитание месяцев из различных типов дат
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 month)┌─minus(CAST('1998-06-16', 'Date'), toIntervalMonth(10))─┐
│ 1997-08-16 │
└────────────────────────────────────────────────────────┘subtractNanoseconds
Добавленный в: v20.1.0
Вычитает указанное количество наносекунд из значения типа «дата и время» или из даты и времени, представленных в виде строки.
Синтаксис
subtractNanoseconds(datetime, num)Аргументы
datetime— дата и время, из которых нужно вычесть указанное количество наносекунд.DateTimeилиDateTime64, илиStringnum— количество наносекунд, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime за вычетом num наносекунд. DateTime64
Примеры
Вычитание наносекунд из значений разных типов даты и времени
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┌─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
SELECT dateSub('1998-06-16'::DateTime, INTERVAL 10 nanosecond)┌─minus(CAST('1998-06-16', 'DateTime'), toIntervalNanosecond(10))─┐
│ 1998-06-15 23:59:59.999999990 │
└─────────────────────────────────────────────────────────────────┘subtractQuarters
Добавленный в: v20.1.0
Вычитает указанное количество кварталов из даты, даты и времени или даты либо даты и времени, представленных в виде строки.
Синтаксис
subtractQuarters(datetime, num)Аргументы
datetime— дата или дата и время, из которых нужно вычесть указанное количество кварталов.DateorDate32orDateTimeorDateTime64orStringnum— количество кварталов, которое нужно вычесть.(U)Int*orFloat*
Возвращаемое значение
Возвращает значение datetime за вычетом num кварталов Date or Date32 or DateTime or DateTime64
Примеры
Вычитание кварталов для разных типов дат
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 quarter)┌─minus(CAST('1998-06-16', 'Date'), toIntervalQuarter(10))─┐
│ 1995-12-16 │
└──────────────────────────────────────────────────────────┘subtractSeconds
Добавленный в: v1.1.0
Вычитает указанное количество секунд из даты, даты и времени или даты либо даты и времени, представленных в виде строки.
Синтаксис
subtractSeconds(datetime, num)Аргументы
datetime— Дата или дата и время, из которых вычитается указанное количество секунд.DateилиDate32илиDateTimeилиDateTime64илиStringnum— Количество секунд, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime за вычетом num секунд. DateTime или DateTime64(3)
Примеры
Вычитание секунд из различных типов дат
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 second)┌─minus(CAST('1998-06-16', 'Date'), toIntervalSecond(10))─┐
│ 1998-06-15 23:59:50 │
└─────────────────────────────────────────────────────────┘subtractTupleOfIntervals
Добавленный в: v22.11.0
Последовательно вычитает кортеж интервалов из даты или даты и времени.
Синтаксис
subtractTupleOfIntervals(datetime, intervals)Аргументы
datetime— Дата или дата и время, из которых нужно вычесть интервалы.DateилиDate32илиDateTimeилиDateTime64intervals— Кортеж интервалов, которые нужно вычесть изdatetime.Tuple(Interval)
Возвращаемое значение
Возвращает date, из которого вычтены intervals: Date или Date32 или DateTime или DateTime64
Примеры
Вычитание кортежа интервалов из даты
WITH toDate('2018-01-01') AS date SELECT subtractTupleOfIntervals(date, (INTERVAL 1 DAY, INTERVAL 1 YEAR))┌─subtractTupleOfIntervals(date, (toIntervalDay(1), toIntervalYear(1)))─┐
│ 2016-12-31 │
└───────────────────────────────────────────────────────────────────────┘subtractWeeks
Добавленный в: v1.1.0
Вычитает указанное количество недель из даты, даты и времени или даты/даты и времени, представленных в виде строки.
Синтаксис
subtractWeeks(datetime, num)Аргументы
datetime— дата или дата и время, из которых нужно вычесть указанное количество недель.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество недель, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime минус num недель. Date или Date32 или DateTime или DateTime64
Примеры
Вычитание недель из значений разных типов даты
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 week)┌─minus(CAST('1998-06-16', 'Date'), toIntervalWeek(10))─┐
│ 1998-04-07 │
└───────────────────────────────────────────────────────┘subtractYears
Добавленный в: v1.1.0
Вычитает указанное количество лет из даты, даты и времени или даты либо даты и времени в строковом формате.
Синтаксис
subtractYears(datetime, num)Аргументы
datetime— дата или дата и время, из которых нужно вычесть указанное количество лет.DateилиDate32илиDateTimeилиDateTime64илиStringnum— количество лет, которое нужно вычесть.(U)Int*илиFloat*
Возвращаемое значение
Возвращает datetime за вычетом num лет. Date или Date32 или DateTime или DateTime64
Примеры
Вычитание лет из разных типов дат
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┌─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
SELECT dateSub('1998-06-16'::Date, INTERVAL 10 year)┌─minus(CAST('1998-06-16', 'Date'), toIntervalYear(10))─┐
│ 1988-06-16 │
└───────────────────────────────────────────────────────┘timeDiff
Добавленный в: v23.4.0
Возвращает разницу между двумя датами или значениями даты и времени в секундах.
Разница вычисляется как enddate - startdate.
Эта функция эквивалентна dateDiff('second', startdate, enddate).
Чтобы вычислить разницу во времени в других единицах (часах, днях, месяцах и т. д.), используйте функцию dateDiff.
Синтаксис
timeDiff(startdate, enddate)Аргументы
startdate— Первое значение времени, которое вычитается (вычитаемое).DateилиDate32илиDateTimeилиDateTime64enddate— Второе значение времени, из которого вычитается первое (уменьшаемое).DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает разницу между enddate и startdate, выраженную в секундах. Int64
Примеры
Вычисление разницы во времени в секундах
SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) AS res┌───res─┐
│ 90000 │
└───────┘Рассчитать разницу во времени и перевести в часы
SELECT timeDiff(toDateTime('2018-01-01 22:00:00'), toDateTime('2018-01-02 23:00:00')) / 3600 AS hours┌─hours─┐
│ 25 │
└───────┘Эквивалентно dateDiff в секундах
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┌─time_diff_result─┬─date_diff_result─┐
│ 259200 │ 259200 │
└──────────────────┴──────────────────┘timeSlot
Добавленный в: v1.1.0
Округляет время до начала получасового интервала.
Синтаксис
timeSlot(time[, time_zone])Аргументы
time— Время, которое нужно округлить до начала получасового интервала.DateTimeилиDate32илиDateTime64time_zone— Необязательно. Константное значение типа String или выражение, задающее часовой пояс.String
Возвращаемое значение
Возвращает время, округлённое до начала получасового интервала. DateTime
Примеры
Округление времени до получасового интервала
SELECT timeSlot(toDateTime('2000-01-02 03:04:05', 'UTC'))┌─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илиDateTime64Duration— Длительность интервала в секундах.UInt32илиDateTime64Size— Необязательно. Размер временных слотов в секундах. По умолчанию — 1800 (30 минут).UInt32илиDateTime64
Возвращаемое значение
Возвращает массив значений DateTime/DateTime64 (тип возвращаемого значения соответствует типу StartTime). Для DateTime64 масштаб возвращаемого значения может отличаться от масштаба StartTime — берется наибольший масштаб среди всех переданных аргументов. Array(DateTime) или Array(DateTime64)
Примеры
Генерация временных слотов для интервала
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))┌─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— Дата или дата и время.Stringexpr_time— Необязательно. Время, которое будет добавлено к преобразованному значению.String
Возвращаемое значение
Возвращает преобразованное значение expr или expr с добавленным временем в формате DateTime64(6)
Примеры
Преобразование строки даты в DateTime64(6)
SELECT timestamp('2023-12-31') AS ts;┌─────────────────────────ts─┐
│ 2023-12-31 00:00:00.000000 │
└────────────────────────────┘Добавить время к строке с датой
SELECT timestamp('2023-12-31 12:00:00', '12:00:00.11') AS ts;┌─────────────────────────ts─┐
│ 2024-01-01 00:00:00.110000 │
└────────────────────────────┘timezone
Добавленный в: v21.4.0
Возвращает имя часового пояса текущего сеанса или преобразует смещение либо название часового пояса в каноническое имя часового пояса.
Синтаксис
timezone()Псевдонимы: timeZone
Аргументы
- Нет.
Возвращаемое значение
Возвращает каноническое имя часового пояса в виде String
Примеры
Пример использования
SELECT timezone()┌─timezone()───────┐
│ Europe/Amsterdam │
└──────────────────┘timezoneOf
Добавленный в: v21.4.0
Возвращает имя часового пояса для значения DateTime или DateTime64.
Синтаксис
timezoneOf(datetime)Псевдонимы: timeZoneOf
Аргументы
datetime— Значение типаDateTimeилиDateTime64timezone— Необязательно. Имя часового пояса, в который нужно преобразовать значениеdatetime.String
Возвращаемое значение
Возвращает имя часового пояса для datetime. String
Примеры
Пример использования
SELECT timezoneOf(now());┌─timezoneOf(now())─┐
│ Etc/UTC │
└───────────────────┘timezoneOffset
Добавленный в: v21.6.0
Возвращает смещение часового пояса относительно UTC в секундах. Функция учитывает переход на летнее время и исторические изменения часового пояса для указанных даты и времени.
Синтаксис
timezoneOffset(datetime)Псевдонимы: timeZoneOffset
Аргументы
datetime— значениеDateTime, для которого требуется получить смещение часового пояса.DateTimeилиDateTime64
Возвращаемое значение
Возвращает смещение относительно UTC в секундах Int32
Примеры
Пример использования
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;┌────────────────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
Примеры
Пример использования
SELECT toDayOfMonth(toDateTime('2023-04-21 10:20:30'))┌─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илиDateTime64mode— Необязательный параметр. Целое число, задающее режим недели (0-3). Если не указан, по умолчанию используется 0.UInt8timezone— Необязательный параметр. Часовой пояс, используемый для преобразования.String
Возвращаемое значение
Возвращает день недели для указанного Date или DateTime. UInt8
Примеры
Пример использования
-- Следующая дата — 21 апреля 2023 года, это пятница:
SELECT
toDayOfWeek(toDateTime('2023-04-21')),
toDayOfWeek(toDateTime('2023-04-21'), 1)┌─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
Примеры
Пример использования
SELECT toDayOfYear(toDateTime('2023-04-21 10:20:30'))┌─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
Примеры
Пример использования
SELECT toDaysInMonth(toDate('2023-02-01')), toDaysInMonth(toDate('2024-02-01')), toDaysInMonth(toDate('2023-01-01'))┌─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илиDateTime64time_zone— Часовой пояс.String
Возвращаемое значение
Возвращает количество дней, прошедших с даты 0000-01-01. UInt32
Примеры
Вычислить количество дней с начала нулевого года
SELECT toDaysSinceYearZero(toDate('2023-09-08'))┌─toDaysSinceYearZero(toDate('2023-09-08'))─┐
│ 739136 │
└───────────────────────────────────────────┘toHour
Добавленный в: v1.1.0
Возвращает часовой компонент (0–23) значения DateTime или DateTime64.
Синтаксис
toHour(datetime)Псевдонимы: HOUR
Аргументы
datetime— дата и время, из которых нужно получить час.DateTimeилиDateTime64
Возвращаемое значение
Возвращает час (0–23) для datetime. UInt8
Примеры
Пример использования
SELECT toHour(toDateTime('2023-04-21 10:20:30'))┌─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илиDateTime64timezone— Необязательно. Часовой пояс.String
Возвращаемое значение
Возвращает номер недели по ISO в соответствии со стандартом ISO 8601. Возвращает число от 1 до 53. UInt8
Примеры
Получение номеров недель по ISO
SELECT toDate('2016-12-27') AS date, toISOWeek(date) AS isoWeek┌───────date─┬─isoWeek─┐
│ 2016-12-27 │ 52 │
└────────────┴─────────┘ISO-неделя может относиться к другому году
SELECT toDate('2025-12-29') AS date, toISOWeek(date) AS isoWeek, toYear(date) AS year┌───────date─┬─isoWeek─┬─year─┐
│ 2025-12-29 │ 1 │ 2025 │
└────────────┴─────────┴──────┘toISOYear
Добавленный в: v18.4.0
Преобразует дату или дату и время в номер года по ISO.
Синтаксис
toISOYear(datetime)Аргументы
datetime— Значение типа дата или дата и время.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает входное значение, преобразованное в номер года по ISO. UInt16
Примеры
Получение года по ISO из значений даты
SELECT
toISOYear(toDate('2024/10/02')) as year1,
toISOYear(toDateTime('2024-10-02 01:30:00')) as year2┌─year1─┬─year2─┐
│ 2024 │ 2024 │
└───────┴───────┘toLastDayOfMonth
Добавленный в: v1.1.0
Округляет дату или дату и время до последнего дня месяца.
Синтаксис
toLastDayOfMonth(value)Псевдонимы: LAST_DAY
Аргументы
value— дата или дата и время, которые нужно округлить вверх до последнего дня месяца.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает дату последнего дня месяца для указанной даты или даты и времени. Date
Примеры
Округлить вверх до последнего дня месяца
SELECT toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))┌─toLastDayOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-04-30 │
└─────────────────────────────────────────────────────┘toLastDayOfWeek
Добавленный в: v23.5.0
Округляет дату или дату и время до ближайшей субботы или воскресенья в большую сторону.
Синтаксис
toLastDayOfWeek(datetime[, mode[, timezone]])Аргументы
datetime— Дата или дата и время для преобразования.DateилиDateTimeилиDate32илиDateTime64mode— Определяет первый день недели, как описано в функцииtoWeek(). По умолчанию —0.UInt8timezone— Необязательно. Часовой пояс, используемый для преобразования. Если не указан, используется часовой пояс сервера.String
Возвращаемое значение
Возвращает дату ближайшей субботы или воскресенья, совпадающую с указанной датой или следующую за ней, в зависимости от режима. Date или Date32
Примеры
Округление вверх до ближайшей субботы или воскресенья
SELECT
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')), /* a Friday */
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* a Friday */
toLastDayOfWeek(toDate('2023-04-23')), /* a Sunday */
toLastDayOfWeek(toDate('2023-04-23'), 1) /* a Sunday */
FORMAT VerticalRow 1:
──────
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30')): 2023-04-22
toLastDayOfWeek(toDateTime('2023-04-21 10:20:30'), 1): 2023-04-23
toLastDayOfWeek(toDate('2023-04-23')): 2023-04-29
toLastDayOfWeek(toDate('2023-04-23'), 1): 2023-04-23toMicrosecond
Добавленный в: v25.7.0
Возвращает микросекунды (0–999999) значения DateTime64.
Синтаксис
toMicrosecond(datetime)Псевдонимы: MICROSECOND
Аргументы
datetime— дата и время, из которых извлекается микросекунда.DateTime64
Возвращаемое значение
Возвращает значение микросекунды в пределах секунды (0 - 999999) из datetime. UInt32
Примеры
Пример использования
SELECT toMicrosecond(toDateTime64('2023-04-21 10:20:30.456789', 6));┌─toMicrosecond(toDateTime64('2023-04-21 10:20:30.456789', 6))─┐
│ 456789 │
└──────────────────────────────────────────────────────────────┘toMillisecond
Добавленный в: v24.2.0
Возвращает миллисекундную составляющую (0–999) значения DateTime или DateTime64.
Синтаксис
toMillisecond(datetime)Псевдонимы: MILLISECOND
Аргументы
datetime— дата и время, из которых извлекается миллисекунда.DateTimeилиDateTime64
Возвращаемое значение
Возвращает миллисекунду в пределах минуты (0 - 59) для datetime. UInt16
Примеры
Пример использования
SELECT toMillisecond(toDateTime64('2023-04-21 10:20:30.456', 3));┌─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
Примеры
Пример использования
SELECT toMinute(toDateTime('2023-04-21 10:20:30'))┌─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)Аргументы
date— Дата в виде строки.StringилиFixedString
Возвращаемое значение
Возвращает число модифицированного юлианского дня. Int32
Примеры
Преобразование даты в модифицированный юлианский день
SELECT toModifiedJulianDay('2020-01-01')┌─toModifiedJulianDay('2020-01-01')─┐
│ 58849 │
└───────────────────────────────────┘toModifiedJulianDayOrNull
Добавленный в: v21.1.0
Аналогично toModifiedJulianDay(), но вместо генерации исключений возвращает NULL.
Синтаксис
toModifiedJulianDayOrNull(date)Аргументы
date— дата в текстовом формате.StringилиFixedString
Возвращаемое значение
Возвращает номер модифицированного юлианского дня для корректного значения date, в противном случае — null. Nullable(Int32)
Примеры
Преобразование даты в модифицированный юлианский день с обработкой null
SELECT toModifiedJulianDayOrNull('2020-01-01');
SELECT toModifiedJulianDayOrNull('0000-00-00'); -- invalid date, returns NULL┌─toModifiedJulianDayOrNull('2020-01-01')─┐
│ 58849 │
└─────────────────────────────────────────┘
┌─toModifiedJulianDayOrNull('0000-00-00')─┐
│ ᴺᵁᴸᴸ │
└─────────────────────────────────────────┘toMonday
Добавленный в: v1.1.0
Округляет дату или дату и время вниз до понедельника той же недели. Возвращает дату.
Синтаксис
toMonday(value)Аргументы
value— дата или дата и время, которые нужно округлить вниз до понедельника соответствующей недели.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает дату понедельника той же недели для указанной даты или даты и времени. Date
Примеры
Округлить вниз до понедельника недели
SELECT
toMonday(toDateTime('2023-04-21 10:20:30')), -- A Friday
toMonday(toDate('2023-04-24')); -- Already a Monday┌─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
Примеры
Пример использования
SELECT toMonth(toDateTime('2023-04-21 10:20:30'))┌─toMonth(toDateTime('2023-04-21 10:20:30'))─┐
│ 4 │
└────────────────────────────────────────────┘toMonthNumSinceEpoch
Добавленный в: v25.3.0
Возвращает количество месяцев, прошедших с начала 1970 года
Синтаксис
toMonthNumSinceEpoch(date)Аргументы
date— дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Положительное целое число
Примеры
Пример
SELECT toMonthNumSinceEpoch(toDate('2024-10-01'))657toNanosecond
Добавленный в: v25.7.0
Возвращает наносекундную составляющую (0-999999999) значения DateTime64.
Синтаксис
toNanosecond(datetime)Псевдонимы: NANOSECOND
Аргументы
datetime— дата и время, из которых извлекается наносекунда.DateTime64
Возвращаемое значение
Возвращает значение наносекундной части секунды (0 - 999999999) для datetime. UInt32
Примеры
Пример использования
SELECT toNanosecond(toDateTime64('2023-04-21 10:20:30.123456789', 9));┌─toNanosecond(toDateTime64('2023-04-21 10:20:30.123456789', 9))─┐
│ 123456789 │
└────────────────────────────────────────────────────────────────┘toQuarter
Добавленный в: v1.1.0
Возвращает номер квартала года (1–4) для указанного значения Date или DateTime.
Синтаксис
toQuarter(datetime)Псевдонимы: QUARTER
Аргументы
datetime— дата или дата и время, для которых нужно получить квартал года.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает квартал года для указанной даты/времени UInt8
Примеры
Пример использования
SELECT toQuarter(toDateTime('2023-04-21 10:20:30'))┌─toQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│ 2 │
└──────────────────────────────────────────────┘toRelativeDayNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество дней, прошедших с некоторой фиксированной точки в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычислять разницу в днях между двумя датами или датой и временем, например, toRelativeDayNum(dt1) - toRelativeDayNum(dt2).
Синтаксис
toRelativeDayNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество дней от фиксированной точки отсчета в прошлом. UInt32
Примеры
Вычисление относительных номеров дней
SELECT toRelativeDayNum(toDate('2023-04-01')) - toRelativeDayNum(toDate('2023-01-01'))┌─minus(toRelativeDayNum(toDate('2023-04-01')), toRelativeDayNum(toDate('2023-01-01')))─┐
│ 90 │
└───────────────────────────────────────────────────────────────────────────────────────┘toRelativeHourNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество часов, прошедших с некоторого фиксированного момента в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычисление разницы в часах между двумя датами или датами и временем, например, toRelativeHourNum(dt1) - toRelativeHourNum(dt2).
Синтаксис
toRelativeHourNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает число часов с фиксированной точки отсчета в прошлом. UInt32
Примеры
Получить относительные номера часов
SELECT toRelativeHourNum(toDateTime('2023-01-01 12:00:00')) - toRelativeHourNum(toDateTime('2023-01-01 00:00:00')) AS hours_difference┌─hours_difference─┐
│ 12 │
└──────────────────┘toRelativeMinuteNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество минут, прошедших с некоторого фиксированного момента в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не следует использовать автономно.
Основное назначение функции — вычисление разницы в минутах между двумя датами или датами и временем, например, toRelativeMinuteNum(dt1) - toRelativeMinuteNum(dt2).
Синтаксис
toRelativeMinuteNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество минут от фиксированной точки отсчета в прошлом. UInt32
Примеры
Получение относительных номеров минут
SELECT toRelativeMinuteNum(toDateTime('2023-01-01 00:30:00')) - toRelativeMinuteNum(toDateTime('2023-01-01 00:00:00')) AS minutes_difference┌─minutes_difference─┐
│ 30 │
└────────────────────┘toRelativeMonthNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в число месяцев, прошедших с некоторой фиксированной точки в прошлом.
Точная точка во времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычисление разницы в месяцах между двумя датами или значениями типа «дата и время», например, toRelativeMonthNum(dt1) - toRelativeMonthNum(dt2).
Синтаксис
toRelativeMonthNum(date)Аргументы
date— дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество месяцев от фиксированной точки отсчёта в прошлом. UInt32
Примеры
Получение относительных номеров месяцев
SELECT toRelativeMonthNum(toDate('2023-04-01')) - toRelativeMonthNum(toDate('2023-01-01')) AS months_difference┌─months_difference─┐
│ 3 │
└───────────────────┘toRelativeQuarterNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество кварталов, прошедших с некоторого фиксированного момента в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычисление разницы в кварталах между двумя датами или датами и временем, например, toRelativeQuarterNum(dt1) - toRelativeQuarterNum(dt2).
Синтаксис
toRelativeQuarterNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество кварталов, прошедших с фиксированной точки отсчёта в прошлом. UInt32
Примеры
Получение относительных номеров кварталов
SELECT toRelativeQuarterNum(toDate('2023-04-01')) - toRelativeQuarterNum(toDate('2023-01-01')) AS quarters_difference┌─quarters_difference─┐
│ 1 │
└─────────────────────┘toRelativeSecondNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество секунд, прошедших с некоторой фиксированной точки в прошлом.
Точная точка во времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычислять разницу в секундах между двумя датами или значениями даты и времени, например, toRelativeSecondNum(dt1) - toRelativeSecondNum(dt2).
Синтаксис
toRelativeSecondNum(date)Аргументы
date— Дата или дата и время.DateorDateTimeorDateTime64
Возвращаемое значение
Возвращает число секунд от фиксированной точки отсчёта в прошлом. UInt32
Примеры
Получение относительных номеров секунд
SELECT toRelativeSecondNum(toDateTime('2023-01-01 00:01:00')) - toRelativeSecondNum(toDateTime('2023-01-01 00:00:00')) AS seconds_difference┌─seconds_difference─┐
│ 60 │
└────────────────────┘toRelativeWeekNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество недель, прошедших с некоторого фиксированного момента в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать автономно.
Основное назначение функции — вычисление разницы в неделях между двумя датами или значениями даты и времени, например, toRelativeWeekNum(dt1) - toRelativeWeekNum(dt2).
Синтаксис
toRelativeWeekNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество недель, прошедших с фиксированной точки отсчета в прошлом. UInt32
Примеры
Получение относительных номеров недель
SELECT toRelativeWeekNum(toDate('2023-01-08')) - toRelativeWeekNum(toDate('2023-01-01')) AS weeks_difference┌─weeks_difference─┐
│ 1 │
└──────────────────┘toRelativeYearNum
Добавленный в: v1.1.0
Преобразует дату или дату и время в количество лет, прошедших с некоторой фиксированной точки в прошлом.
Точный момент времени является деталью реализации, поэтому эту функцию не предполагается использовать
автономно. Основное назначение функции — вычисление разницы в годах между двумя датами или значениями типа дата и время, например, toRelativeYearNum(dt1) - toRelativeYearNum(dt2).
Синтаксис
toRelativeYearNum(date)Аргументы
date— Дата или дата и время.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество лет от фиксированной точки отсчета в прошлом. UInt16
Примеры
Получение относительного номера года
SELECT toRelativeYearNum('2010-10-01'::DateTime) - toRelativeYearNum('2000-01-01'::DateTime)┌─minus(toRelativeYearNum(CAST('2010-10-01', 'DateTime')), toRelativeYearNum(CAST('2000-01-01', 'DateTime')))─┐
│ 10 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘toSecond
Добавленный в: v1.1.0
Возвращает секундную составляющую (0-59) значения DateTime или DateTime64.
Синтаксис
toSecond(datetime)Псевдонимы: SECOND
Аргументы
datetime— дата и время, из которых нужно получить секунду.DateTimeилиDateTime64
Возвращаемое значение
Возвращает секунду минуты (0 - 59) для datetime. UInt8
Примеры
Пример использования
SELECT toSecond(toDateTime('2023-04-21 10:20:30'))┌─toSecond(toDateTime('2023-04-21 10:20:30'))─┐
│ 30 │
└─────────────────────────────────────────────┘toStartOfDay
Добавленный в: v1.1.0
Округляет дату и время вниз до начала дня.
Синтаксис
toStartOfDay(datetime)Аргументы
Возвращаемое значение
Возвращает дату и время, округлённые вниз до начала дня. DateTime или DateTime64
Примеры
Округление вниз до начала дня
SELECT toStartOfDay(toDateTime('2023-04-21 10:20:30'))┌─toStartOfDay(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-04-21 00:00:00 │
└─────────────────────────────────────────────────┘toStartOfFifteenMinutes
Добавленный в: v1.1.0
Округляет дату и время вниз до начала пятнадцатиминутного интервала.
Синтаксис
toStartOfFifteenMinutes(datetime)Аргументы
datetime— Дата или дата и время, которое нужно округлить.DateTimeилиDateTime64
Возвращаемое значение
Возвращает дату и время, округлённые до начала ближайшего пятнадцатиминутного интервала. DateTime или DateTime64
Примеры
Пример
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 VerticalRow 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:00toStartOfFiveMinutes
Добавленный в: v22.6.0
Округляет дату и время вниз до начала ближайшего пятиминутного интервала.
Синтаксис
toStartOfFiveMinutes(datetime)Псевдонимы: toStartOfFiveMinute
Аргументы
datetime— дата и время, которые нужно округлить.DateTimeилиDateTime64
Возвращаемое значение
Возвращает дату и время, округлённые к началу ближайшего пятиминутного интервала. DateTime или DateTime64
Примеры
Пример
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 VerticalRow 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:00toStartOfHour
Добавленный в: v1.1.0
Округляет дату и время вниз до начала часа.
Синтаксис
toStartOfHour(datetime)Аргументы
datetime— Дата и время, которое нужно округлить.DateTimeилиDateTime64
Возвращаемое значение
Возвращает дату и время, округлённые вниз до начала часа. DateTime или DateTime64
Примеры
Округление до начала часа
SELECT
toStartOfHour(toDateTime('2023-04-21 10:20:30'));┌─toStartOfHour(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-04-21 10:00:00 │
└──────────────────────────────────────────────────┘toStartOfISOYear
Добавленный в: v1.1.0
Округляет дату или дату и время вниз до первого дня ISO-года, который может не совпадать с обычным календарным годом. См. дату недели по ISO.
Синтаксис
toStartOfISOYear(value)Аргументы
value— дата или дата и время, которые нужно округлить вниз до первого дня года по ISO.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает первый день года по ISO для указанной даты или даты и времени. Date
Примеры
Округлить вниз до первого дня года по ISO
SELECT toStartOfISOYear(toDateTime('2023-04-21 10:20:30'))┌─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).
Вычисление выполняется относительно определённых моментов времени:
| Interval | Start |
|---|---|
| YEAR | год 0 |
| QUARTER | 1900 Q1 |
| MONTH | январь 1900 |
| WEEK | 1970, 1-я неделя (01-05) |
| DAY | 1970-01-01 |
| HOUR | (*) |
| MINUTE | 1970-01-01 00:00:00 |
| SECOND | 1970-01-01 00:00:00 |
| MILLISECOND | 1970-01-01 00:00:00 |
| MICROSECOND | 1970-01-01 00:00:00 |
| NANOSECOND | 1970-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]])Псевдонимы: date_bin, time_bucket
Аргументы
value— Значение типа дата или дата и время, которое нужно округлить вниз.DateилиDateTimeилиDateTime64x— Число, задающее длину интервала. -unit— Единица интервала: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND. -time_zone— Необязательно. Имя часового пояса в виде строки. -origin— Необязательно. Точка отсчёта для вычисления (только для второй перегрузки).
Возвращаемое значение
Возвращает начало интервала, в который попадает входное значение. DateTime
Примеры
Базовое округление по интервалу
SELECT toStartOfInterval(toDateTime('2023-01-15 14:30:00'), INTERVAL 1 MONTH)┌─toStartOfInterval(toDateTime('2023-01-15 14:30:00'), toIntervalMonth(1))─┐
│ 2023-01-01 │
└──────────────────────────────────────────────────────────────────────────┘Использование начальной точки
SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'))┌─toStartOfInterval(toDateTime('2023-01-01 14:45:00'), toIntervalMinute(1), toDateTime('2023-01-01 14:35:30'))─┐
│ 2023-01-01 14:44:30 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘toStartOfMicrosecond
Добавленный в: v22.6.0
Округляет дату и время вниз до начала микросекунды.
Синтаксис
toStartOfMicrosecond(datetime[, timezone])Аргументы
datetime— Дата и время.DateTime64timezone— Необязательно. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметраvalue.String
Возвращаемое значение
Входное значение с субмикросекундами DateTime64
Примеры
Запрос без часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64);┌────toStartOfMicrosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999000 │
└───────────────────────────────┘Запрос с указанием часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMicrosecond(dt64, 'Asia/Istanbul');┌─toStartOfMicrosecond(dt64, 'Asia/Istanbul')─┐
│ 2020-01-01 13:20:30.999999000 │
└─────────────────────────────────────────────┘toStartOfMillisecond
Добавленный в: v22.6.0
Округляет дату и время вниз до начала миллисекунды.
Синтаксис
toStartOfMillisecond(datetime[, timezone])Аргументы
datetime— Дата и время.DateTime64timezone— Необязательный. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметраvalue.String
Возвращаемое значение
Входное значение с долями миллисекунды. DateTime64
Примеры
Запрос без часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64);┌────toStartOfMillisecond(dt64)─┐
│ 2020-01-01 10:20:30.999000000 │
└───────────────────────────────┘Запрос с указанием часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfMillisecond(dt64, 'Asia/Istanbul');┌─toStartOfMillisecond(dt64, 'Asia/Istanbul')─┐
│ 2020-01-01 13:20:30.999000000 │
└─────────────────────────────────────────────┘toStartOfMinute
Добавленный в: v1.1.0
Округляет дату и время вниз до начала минуты.
Синтаксис
toStartOfMinute(datetime)Аргументы
datetime— дата и время, которое нужно округлить.DateTimeилиDateTime64
Возвращаемое значение
Возвращает дату и время, округлённые до начала минуты. DateTime или DateTime64
Примеры
Округление до начала минуты
SELECT
toStartOfMinute(toDateTime('2023-04-21 10:20:30')),
toStartOfMinute(toDateTime64('2023-04-21 10:20:30.5300', 8))
FORMAT VerticalRow 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:00toStartOfMonth
Добавленный в: v1.1.0
Округляет дату или дату и время вниз до первого дня месяца.
Синтаксис
toStartOfMonth(value)Аргументы
value— дата или дата и время, которые нужно округлить до первого дня месяца.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает первый день месяца для указанной даты или даты и времени. Date
Примеры
Округление до первого дня месяца
SELECT toStartOfMonth(toDateTime('2023-04-21 10:20:30'))┌─toStartOfMonth(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-04-01 │
└───────────────────────────────────────────────────┘toStartOfNanosecond
Добавленный в: v22.6.0
Округляет дату и время вниз до начала наносекунды.
Синтаксис
toStartOfNanosecond(datetime[, timezone])Аргументы
datetime— Дата и время.DateTime64timezone— Необязательно. Часовой пояс возвращаемого значения. Если не указан, функция использует часовой пояс параметраvalue.String
Возвращаемое значение
Входное значение с наносекундами. DateTime64
Примеры
Запрос без часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64);┌─────toStartOfNanosecond(dt64)─┐
│ 2020-01-01 10:20:30.999999999 │
└───────────────────────────────┘Запрос с указанием часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999999999', 9) AS dt64
SELECT toStartOfNanosecond(dt64, 'Asia/Istanbul');┌─toStartOfNanosecond(dt64, 'Asia/Istanbul')─┐
│ 2020-01-01 13:20:30.999999999 │
└────────────────────────────────────────────┘toStartOfQuarter
Добавленный в: v1.1.0
Округляет дату или дату и время вниз до первого дня квартала. Первый день квартала — это 1 января, 1 апреля, 1 июля или 1 октября.
Синтаксис
toStartOfQuarter(value)Аргументы
value— Дата или дата и время, которое нужно округлить вниз до первого дня квартала.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает первый день квартала для указанной даты или даты и времени. Date
Примеры
Округление вниз до первого дня квартала
SELECT toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))┌─toStartOfQuarter(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-04-01 │
└─────────────────────────────────────────────────────┘toStartOfSecond
Добавленный в: v20.5.0
Округляет дату и время до начала секунды.
Синтаксис
toStartOfSecond(datetime[, timezone])Аргументы
datetime— Дата и время, у которых нужно отбросить доли секунды.DateTime64timezone— Необязательный. Часовой пояс для возвращаемого значения. Если не указан, функция использует часовой пояс параметраvalue.String
Возвращаемое значение
Возвращает входное значение без долей секунды. DateTime64
Примеры
Запрос без часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64);┌───toStartOfSecond(dt64)─┐
│ 2020-01-01 10:20:30.000 │
└─────────────────────────┘Запрос с указанием часового пояса
WITH toDateTime64('2020-01-01 10:20:30.999', 3) AS dt64
SELECT toStartOfSecond(dt64, 'Asia/Istanbul');┌─toStartOfSecond(dt64, 'Asia/Istanbul')─┐
│ 2020-01-01 13:20:30.000 │
└────────────────────────────────────────┘toStartOfTenMinutes
Добавленный в: v20.1.0
Округляет дату и время вниз до начала ближайшего интервала в десять минут.
Синтаксис
toStartOfTenMinutes(datetime)Аргументы
datetime— Дата и время.DateTimeилиDateTime64
Возвращаемое значение
Возвращает дату и время, округлённые до начала ближайшего десятиминутного интервала. DateTime или DateTime64
Примеры
Пример
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 VerticalRow 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:00toStartOfWeek
Добавленный в: v20.1.0
Округляет дату или дату и время вниз до ближайшего воскресенья или понедельника.
Синтаксис
toStartOfWeek(datetime[, mode[, timezone]])Аргументы
datetime— дата или дата и время для преобразования.DateилиDateTimeилиDate32илиDateTime64mode— определяет первый день недели, как описано для функцииtoWeek(). Значение по умолчанию —0.UInt8timezone— часовой пояс, используемый для преобразования. Если не указан, используется часовой пояс сервера.String
Возвращаемое значение
Возвращает дату ближайшего воскресенья или понедельника, не превышающую указанную дату, в зависимости от режима. Date или Date32
Примеры
Округление вниз до ближайшего воскресенья или понедельника
SELECT
toStartOfWeek(toDateTime('2023-04-21 10:20:30')), /* a Friday */
toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1), /* a Friday */
toStartOfWeek(toDate('2023-04-24')), /* a Monday */
toStartOfWeek(toDate('2023-04-24'), 1) /* a Monday */
FORMAT VerticalRow 1:
──────
toStartOfWeek(toDateTime('2023-04-21 10:20:30')): 2023-04-16
toStartOfWeek(toDateTime('2023-04-21 10:20:30'), 1): 2023-04-17
toStartOfWeek(toDate('2023-04-24')): 2023-04-23
toStartOfWeek(toDate('2023-04-24'), 1): 2023-04-24toStartOfYear
Добавленный в: v1.1.0
Округляет дату или дату и время вниз до первого дня года. Возвращает значение типа Date.
Синтаксис
toStartOfYear(value)Аргументы
value— Дата или дата и время для округления вниз.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает первый день года для заданной даты/времени Date
Примеры
Округление вниз до первого дня года
SELECT toStartOfYear(toDateTime('2023-04-21 10:20:30'))┌─toStartOfYear(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023-01-01 │
└──────────────────────────────────────────────────┘toTimeWithFixedDate
Добавленный в: v25.5.0
Извлекает компонент времени из значения даты и времени.
Возвращаемый результат представляет собой смещение относительно фиксированного момента времени, в настоящее время 1970-01-02,
однако точный момент времени является деталью реализации и в будущем может измениться.
Поэтому toTimeWithFixedDate не следует использовать отдельно.
Основное назначение функции — вычислять разность во времени между двумя значениями даты и времени, например toTimeWithFixedDate(dt1) - toTimeWithFixedDate(dt2).
Это устаревшая функция toTime, переименованная в v25.5, поскольку имя toTime теперь используется
toTime, которая преобразует значения в
тип данных Time.
Она по-прежнему доступна под прежним именем toTime, если включена настройка
use_legacy_to_time (начиная с v26.7 по умолчанию установлено значение 0, а с v25.6 по v26.6 по умолчанию было установлено значение 1).
Если аргумент datetime содержит компоненты с точностью менее секунды, они отбрасываются в возвращаемом значении DateTime с точностью до секунды.
Синтаксис
toTimeWithFixedDate(datetime[, timezone])Аргументы
datetime— Дата и время, из которых извлекается время.DateTimeилиDateTime64timezone— Необязательно. Часовой пояс возвращаемого значения.String
Возвращаемое значение
Возвращает компонент времени даты и времени в виде смещения относительно фиксированного момента времени (в настоящее время — 1970-01-02). DateTime
Примеры
Вычисление разницы во времени между двумя датами
SELECT toTimeWithFixedDate('2025-06-15 12:00:00'::DateTime) - toTimeWithFixedDate('2024-05-10 11:00:00'::DateTime) AS result, toTypeName(result)┌─result─┬─toTypeName(result)─┐
│ 3600 │ Int32 │
└────────┴────────────────────┘Доли секунды отбрасываются
SELECT toTimeWithFixedDate(toDateTime64('1970-12-10 01:20:30.3000', 3)) AS result, toTypeName(result)┌──────────────result─┬─toTypeName(result)─┐
│ 1970-01-02 01:20:30 │ DateTime │
└─────────────────────┴────────────────────┘Та же функция, вызываемая под прежним именем legacy
SET use_legacy_to_time = 1;
SELECT toTime(toDateTime64('1970-12-10 01:20:30.3000', 3)) AS result, toTypeName(result)┌──────────────result─┬─toTypeName(result)─┐
│ 1970-01-02 01:20:30 │ DateTime │
└─────────────────────┴────────────────────┘toTimezone
Добавленный в: v1.1.0
Преобразует DateTime или DateTime64 в указанный часовой пояс.
Внутреннее значение (число unix-секунд) данных не изменяется.
Изменяются только атрибут часового пояса значения и его строковое представление.
Синтаксис
toTimezone(datetime, timezone)Псевдонимы: toTimeZone
Аргументы
date— Значение для преобразования.DateTimeилиDateTime64timezone— Имя целевого часового пояса.String
Возвращаемое значение
Возвращает ту же временную метку, что и входное значение, но с указанным часовым поясом. DateTime или DateTime64
Примеры
Пример использования
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;Строка 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: 1546300800toUTCTimestamp
Добавленный в: v23.8.0
Преобразует значение типа дата или дата и время из одного часового пояса во временную метку UTC. Эта функция в первую очередь предназначена для совместимости с Apache Spark и аналогичными фреймворками.
Синтаксис
toUTCTimestamp(datetime, time_zone)Псевдонимы: to_utc_timestamp
Аргументы
datetime— Константное значение типа «дата или дата и время» либо выражение.DateTimeилиDateTime64time_zone— Константное значение строкового типа либо выражение, задающее часовой пояс.String
Возвращаемое значение
Возвращает дату или дату и время в часовом поясе UTC. DateTime или DateTime64
Примеры
Преобразование в UTC
SELECT toUTCTimestamp(toDateTime('2023-03-16'), 'Asia/Shanghai')┌─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илиStringtimezone— Необязательно. Часовой пояс для преобразования. Если не указан, используется часовой пояс сервера.String
Возвращаемое значение
Возвращает Unix-временную метку. UInt32
Примеры
Пример использования
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;строка 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: 1509840000toWeek
Добавленный в: 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илиDateTimemode— Необязательно. Режим от0до9определяет первый день недели и диапазон номеров недель. По умолчанию0. -time_zone— Необязательно. Часовой пояс.String
Возвращаемое значение
Возвращает номер недели в соответствии с указанным режимом. UInt32
Примеры
Получение номеров недель в разных режимах
SELECT toDate('2016-12-27') AS date, toWeek(date) AS week0, toWeek(date,1) AS week1, toWeek(date,9) AS week9┌───────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илиDateTime64timezone— необязательно. Часовой пояс для преобразования. Если указан, часовой пояс должен быть строковой константой.String
Возвращаемое значение
Возвращает число типа UInt32, содержащее год и номер месяца (YYYY * 100 + MM). UInt32
Примеры
Преобразование текущей даты в формат YYYYMM
SELECT toYYYYMM(now(), 'US/Eastern')┌─toYYYYMM(now(), 'US/Eastern')─┐
│ 202608 │
└───────────────────────────────┘toYYYYMMDD
Добавленный в: v1.1.0
Преобразует дату или дату и время в число UInt32, содержащее год, месяц и день (YYYY * 10000 + MM * 100 + DD). Принимает второй необязательный аргумент timezone. Если он указан, timezone должен быть строковой константой.
Синтаксис
toYYYYMMDD(datetime[, timezone])Аргументы
datetime— Дата или дата и время для преобразования.DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Часовой пояс, используемый при преобразовании. Если указан, часовой пояс должен быть строковой константой.String
Возвращаемое значение
Возвращает число типа UInt32, содержащее год, месяц и день (YYYY * 10000 + MM * 100 + DD). UInt32
Примеры
Преобразование даты в формат YYYYMMDD в другом часовом поясе
SELECT toYYYYMMDD(toDateTime('2026-01-02 03:04:05', 'UTC'), 'US/Eastern')┌─toYYYYMMDD(toDateTime('2026-01-02 03:04:05', 'UTC'), 'US/Eastern')─┐
│ 20260101 │
└────────────────────────────────────────────────────────────────────┘toYYYYMMDDhhmmss
Добавленный в: v1.1.0
Преобразует дату или дату и время в число UInt64, содержащее год, месяц, день, часы, минуты и секунды (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss).
Принимает необязательный второй аргумент — часовой пояс. Если он указан, часовой пояс должен быть строковой константой.
Синтаксис
toYYYYMMDDhhmmss(datetime[, timezone])Аргументы
datetime— Дата или дата и время для преобразования.DateилиDate32илиDateTimeилиDateTime64timezone— Необязательно. Часовой пояс для преобразования. Если указан, часовой пояс должен быть строковой константой.String
Возвращаемое значение
Возвращает число UInt64, содержащее год, месяц, день, час, минуту и секунду (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss). UInt64
Примеры
Преобразование даты и времени в формат YYYYMMDDhhmmss
SELECT toYYYYMMDDhhmmss(toDateTime('2023-03-02 16:22:09', 'UTC'), 'US/Eastern')┌─toYYYYMMDDhhmmss(toDateTime('2023-03-02 16:22:09', 'UTC'), 'US/Eastern')─┐
│ 20230302112209 │
└──────────────────────────────────────────────────────────────────────────┘toYear
Добавленный в: v1.1.0
Возвращает компонент года (н. э.) из значения Date или DateTime.
Синтаксис
toYear(datetime)Псевдонимы: YEAR
Аргументы
datetime— дата или дата и время, из которых нужно получить год.DateилиDate32илиDateTimeилиDateTime64
Возвращаемое значение
Возвращает год из указанного значения Date или DateTime UInt16
Примеры
Пример использования
SELECT toYear(toDateTime('2023-04-21 10:20:30'))┌─toYear(toDateTime('2023-04-21 10:20:30'))─┐
│ 2023 │
└───────────────────────────────────────────┘toYearNumSinceEpoch
Добавленный в: v25.3.0
Возвращает количество лет, прошедших с 1970 года
Синтаксис
toYearNumSinceEpoch(date)Аргументы
date— Дата или дата и время, которые нужно преобразовать.DateилиDateTimeилиDateTime64
Возвращаемое значение
Положительное целое число
Примеры
Пример
SELECT toYearNumSinceEpoch(toDate('2024-10-01'))54toYearWeek
Добавленный в: 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илиDateTimemode— необязательно. Режим от0до9задаёт первый день недели и диапазон номеров недель. По умолчанию0. -timezone— необязательно. Часовой пояс.String
Возвращаемое значение
Возвращает год и номер недели в виде одного целочисленного значения. UInt32
Примеры
Получение комбинаций год-неделя для разных режимов
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┌───────date─┬─yearWeek0─┬─yearWeek1─┬─yearWeek9─┬─prev_yearWeek─┐
│ 2016-12-27 │ 201652 │ 201652 │ 201701 │ 202152 │
└────────────┴───────────┴───────────┴───────────┴───────────────┘today
Добавленный в: v1.1.0
Возвращает текущую дату на момент анализа запроса. То же, что и toDate(now()).
Синтаксис
today()Псевдонимы: current_date, curdate
Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает текущую дату Date
Примеры
Пример использования
SELECT today() AS today, curdate() AS curdate, current_date() AS current_date FORMAT Pretty┏━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ today ┃ curdate ┃ current_date ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ 2026-08-02 │ 2026-08-02 │ 2026-08-02 │
└────────────┴────────────┴──────────────┘Синтаксис SQL без скобок по стандарту
SELECT TODAY, CURDATE,CURRENT_DATE┌──────TODAY─┬────CURDATE─┬─CURRENT_DATE─┐
│ 2026-08-02 │ 2026-08-02 │ 2026-08-02 │
└────────────┴────────────┴──────────────┘yesterday
Добавленный в: v1.1.0
Не принимает аргументов и возвращает вчерашнюю дату на одном из этапов анализа запроса.
Синтаксис
yesterday()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает вчерашнюю дату. Date
Примеры
Получение вчерашней даты
SELECT yesterday();
SELECT today() - 1;┌─yesterday()─┐
│ 2026-08-01 │
└─────────────┘
┌─minus(today(), 1)─┐
│ 2026-08-01 │
└───────────────────┘