Перейти к основному содержимому
Перейти к основному содержимому

Функции преобразования типов

Распространенные проблемы при преобразовании данных

ClickHouse обычно использует то же поведение, что и программы на C++.

Функции to<type> и cast в некоторых случаях ведут себя по-разному, например, в случае LowCardinality: cast удаляет признак LowCardinality, а функции to<type> этого не делают. Аналогично с Nullable: это поведение несовместимо со стандартом SQL, и его можно изменить с помощью настройки cast_keep_nullable.

Примечание

Учитывайте возможную потерю данных, если значения типа данных преобразуются в тип с меньшим диапазоном (например, из Int64 в Int32) или между несовместимыми типами данных (например, из String в Int). Внимательно проверяйте, что результат соответствует ожиданиям.

Пример:

SELECT
    toTypeName(toLowCardinality('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type────────────┬─to_type_result_type────┬─cast_result_type─┐
│ LowCardinality(String) │ LowCardinality(String) │ String           │
└────────────────────────┴────────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ String           │
└──────────────────┴─────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type
SETTINGS cast_keep_nullable = 1

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ Nullable(String) │
└──────────────────┴─────────────────────┴──────────────────┘

Заметки о функциях toString

Семейство функций toString позволяет преобразовывать числа, строки (но не фиксированные строки), даты и даты со временем друг в друга. Каждая из этих функций принимает один аргумент.

  • При преобразовании в строку или из строки значение форматируется или парсится по тем же правилам, что и для формата TabSeparated (и почти всех других текстовых форматов). Если строку нельзя распарсить, генерируется исключение и запрос отменяется.
  • При преобразовании дат в числа или наоборот дате соответствует количество дней, прошедших с начала эпохи Unix.
  • При преобразовании дат со временем в числа или наоборот дате со временем соответствует количество секунд, прошедших с начала эпохи Unix.
  • Функция toString с аргументом типа DateTime может принимать второй аргумент типа String, содержащий название часового пояса, например: Europe/Amsterdam. В этом случае время форматируется в соответствии с указанным часовым поясом.

Примечания о функциях toDate/toDateTime

Форматы даты и даты-времени, используемые функциями toDate/toDateTime, определены следующим образом:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

В качестве исключения, при преобразовании из числовых типов UInt32, Int32, UInt64 или Int64 в Date, если число больше или равно 65536, оно интерпретируется как Unix timestamp (а не как количество дней) и округляется до даты. Это позволяет поддержать распространённый случай вызова toDate(unix_timestamp), который в противном случае привёл бы к ошибке и потребовал бы более громоздкого выражения toDate(toDateTime(unix_timestamp)).

Преобразование между датой и датой со временем выполняется естественным образом: путём добавления нулевого значения времени или отбрасывания времени.

Преобразование между числовыми типами осуществляется по тем же правилам, что и операции присваивания между различными числовыми типами в C++.

Пример

Запрос:

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10

Результат:

┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belgrade   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Berlin     │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bratislava │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Brussels   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bucharest  │ 2023-09-08 22:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

См. также функцию toUnixTimestamp.

CAST

Впервые представлена в версии: v1.1

Преобразует значение в указанный тип данных. В отличие от функции reinterpret, CAST пытается получить то же значение в целевом типе. Если это невозможно, выбрасывается исключение.

Синтаксис

CAST(x, T)
or CAST(x AS T)
or x::T

Аргументы

  • x — значение любого типа. Any
  • T — целевой тип данных. String

Возвращаемое значение

Возвращает значение, приведённое к целевому типу данных. Any

Примеры

Простое использование

SELECT CAST(42, 'String')
┌─CAST(42, 'String')─┐
│ 42                 │
└────────────────────┘

Использование синтаксиса AS

SELECT CAST('2025-01-01' AS Date)
┌─CAST('2025-01-01', 'Date')─┐
│                 2025-01-01 │
└────────────────────────────┘

Использование синтаксиса ::

SELECT '123'::UInt32
┌─CAST('123', 'UInt32')─┐
│                   123 │
└───────────────────────┘

DATE

Добавлено в: v21.2

Преобразует аргумент в тип данных Date. Это псевдоним функции toDate для совместимости с MySQL. Работает так же, как toDate.

Синтаксис

DATE(expr)

Аргументы

  • expr — Значение, которое нужно преобразовать. String или UInt32 или Date или DateTime

Возвращаемое значение

Возвращает значение типа Date. Date

Примеры

Базовое использование

SELECT DATE('2023-01-01')
2023-01-01

accurateCast

Добавлено в версии: v1.1

Преобразует значение в указанный тип данных. В отличие от CAST, accurateCast выполняет более строгую проверку типов и генерирует исключение, если преобразование приведёт к потере точности данных или если преобразование невозможно.

Эта функция безопаснее обычного CAST, поскольку предотвращает потерю точности и недопустимые преобразования.

Синтаксис

accurateCast(x, T)

Аргументы

  • x — значение для преобразования. Any
  • T — имя целевого типа данных. String

Возвращаемое значение

Возвращает значение, приведённое к целевому типу данных. Any

Примеры

Успешное преобразование

SELECT accurateCast(42, 'UInt16')
┌─accurateCast(42, 'UInt16')─┐
│                        42 │
└───────────────────────────┘

Преобразование строки в число

SELECT accurateCast('123.45', 'Float64')
┌─accurateCast('123.45', 'Float64')─┐
│                            123.45 │
└───────────────────────────────────┘

accurateCastOrDefault

Введена в версии: v21.1

Преобразует значение в указанный тип данных. Аналогично accurateCast, но возвращает значение по умолчанию вместо выбрасывания исключения, если преобразование не может быть выполнено точно.

Если значение по умолчанию передано вторым аргументом, оно должно быть целевого типа. Если значение по умолчанию не передано, используется значение по умолчанию целевого типа.

Синтаксис

accurateCastOrDefault(x, T[, default_value])

Аргументы

  • x — Значение, которое нужно преобразовать. Any
  • T — Имя целевого типа данных. const String
  • default_value — Необязательный параметр. Значение по умолчанию, которое возвращается при неудачной попытке преобразования. Any

Возвращаемое значение

Возвращает значение целевого типа данных или значение по умолчанию, если преобразование невозможно. Any

Примеры

Успешное преобразование

SELECT accurateCastOrDefault(42, 'String')
┌─accurateCastOrDefault(42, 'String')─┐
│ 42                                  │
└─────────────────────────────────────┘

Сбой преобразования с явным значением по умолчанию

SELECT accurateCastOrDefault('abc', 'UInt32', 999::UInt32)
┌─accurateCastOrDefault('abc', 'UInt32', 999)─┐
│                                         999 │
└─────────────────────────────────────────────┘

Ошибка преобразования с неявным значением по умолчанию

SELECT accurateCastOrDefault('abc', 'UInt32')
┌─accurateCastOrDefault('abc', 'UInt32')─┐
│                                      0 │
└────────────────────────────────────────┘

accurateCastOrNull

Впервые представлена в: v1.1

Преобразует значение в указанный тип данных. Аналог accurateCast, но возвращает NULL вместо генерации исключения, если преобразование не может быть выполнено точно.

Эта функция сочетает безопасность accurateCast с корректной обработкой ошибок.

Синтаксис

accurateCastOrNull(x, T)

Аргументы

  • x — Значение, которое нужно преобразовать. Any
  • T — Имя целевого типа данных. String

Возвращаемое значение

Возвращает значение, преобразованное к целевому типу данных, или NULL, если преобразование невозможно. Any

Примеры

Успешное преобразование

SELECT accurateCastOrNull(42, 'String')
┌─accurateCastOrNull(42, 'String')─┐
│ 42                               │
└──────────────────────────────────┘

При ошибке преобразования возвращается NULL

SELECT accurateCastOrNull('abc', 'UInt32')
┌─accurateCastOrNull('abc', 'UInt32')─┐
│                                ᴺᵁᴸᴸ │
└─────────────────────────────────────┘

formatRow

Введена в версии: v20.7

Преобразует произвольные выражения в строку в соответствии с заданным форматом.

Примечание

Если формат содержит суффикс или префикс, он будет добавляться к каждой строке. В этой функции поддерживаются только построчные форматы.

Синтаксис

formatRow(format, x, y, ...)

Аргументы

  • format — текстовый формат, например CSV, TSV. String
  • x, y, ... — выражения. Any

Возвращаемое значение

Отформатированная строка. Для текстовых форматов обычно заканчивается символом новой строки. String

Примеры

Базовое использование

SELECT formatRow('CSV', number, 'good')
FROM numbers(3)
┌─formatRow('CSV', number, 'good')─┐
│ 0,"good"
                         │
│ 1,"good"
                         │
│ 2,"good"
                         │
└──────────────────────────────────┘

С настраиваемым форматом

SELECT formatRow('CustomSeparated', number, 'good')
FROM numbers(3)
SETTINGS format_custom_result_before_delimiter='<prefix>\n', format_custom_result_after_delimiter='<suffix>'
┌─formatRow('CustomSeparated', number, 'good')─┐
│ <prefix>
0    good
<suffix>                   │
│ <prefix>
1    good
<suffix>                   │
│ <prefix>
2    good
<suffix>                   │
└──────────────────────────────────────────────┘

formatRowNoNewline

Добавлена в: v20.7

То же, что и formatRow, но удаляет символ перевода строки в конце каждой строки.

Преобразует произвольные выражения в строку с использованием заданного формата, но удаляет любые завершающие символы перевода строки из результата.

Синтаксис

formatRowNoNewline(format, x, y, ...)

Аргументы

  • format — текстовый формат. Например, CSV, TSV. String
  • x, y, ... — выражения. Any

Возвращаемое значение

Возвращает форматированную строку с удалёнными переводами строк. String

Примеры

Базовое использование

SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3)
┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good"                                  │
│ 1,"good"                                  │
│ 2,"good"                                  │
└───────────────────────────────────────────┘

fromUnixTimestamp64Micro

Появилась в версии: v20.5

Преобразует Unix-метку времени в микросекундах в значение типа DateTime64 с точностью до микросекунд.

Входное значение рассматривается как Unix-метка времени с точностью до микросекунд (количество микросекунд, прошедших с 1970-01-01 00:00:00 UTC).

Синтаксис

fromUnixTimestamp64Micro(value[, timezone])

Аргументы

  • value — Unix-метка времени в микросекундах. Int64
  • timezone — Необязательный параметр. Часовой пояс для возвращаемого значения. String

Возвращаемое значение

Возвращает значение DateTime64 с точностью до микросекунд. DateTime64(6)

Примеры

Пример использования

SELECT fromUnixTimestamp64Micro(1640995200123456)
┌─fromUnixTimestamp64Micro(1640995200123456)─┐
│                 2022-01-01 00:00:00.123456 │
└────────────────────────────────────────────┘

fromUnixTimestamp64Milli

Впервые появилась в: v20.5

Преобразует Unix-метку времени в миллисекундах в значение DateTime64 с миллисекундной точностью.

Входное значение интерпретируется как Unix-метка времени с миллисекундной точностью (количество миллисекунд, прошедших с 1970-01-01 00:00:00 UTC).

Синтаксис

fromUnixTimestamp64Milli(value[, timezone])

Аргументы

  • value — отметка времени Unix в миллисекундах. Int64
  • timezone — необязательный параметр. Часовой пояс для возвращаемого значения. String

Возвращаемое значение

Значение DateTime64 с точностью до миллисекунд. DateTime64(3)

Примеры

Пример использования

SELECT fromUnixTimestamp64Milli(1640995200123)
┌─fromUnixTimestamp64Milli(1640995200123)─┐
│                 2022-01-01 00:00:00.123 │
└─────────────────────────────────────────┘

fromUnixTimestamp64Nano

Добавлена в версии: v20.5

Преобразует Unix‑временную метку в наносекундах в значение DateTime64 с точностью до наносекунды.

Входное значение интерпретируется как Unix‑временная метка с точностью до наносекунды (количество наносекунд, прошедших с 1970-01-01 00:00:00 UTC).

Примечание

Обратите внимание, что входное значение интерпретируется как метка времени в UTC, а не с учётом временной зоны, указанной во входном значении.

Синтаксис

fromUnixTimestamp64Nano(value[, timezone])

Аргументы

  • value — Unix-метка времени в наносекундах. Int64
  • timezone — необязательный параметр. Часовой пояс для возвращаемого значения. String

Возвращаемое значение

Возвращает значение DateTime64 с точностью до наносекунд. DateTime64(9)

Примеры

Пример использования

SELECT fromUnixTimestamp64Nano(1640995200123456789)
┌─fromUnixTimestamp64Nano(1640995200123456789)─┐
│                2022-01-01 00:00:00.123456789 │
└──────────────────────────────────────────────┘

fromUnixTimestamp64Second

Добавлена в версии: v24.12

Преобразует Unix‑метку времени в секундах в значение DateTime64 с точностью до секунды.

Входное значение интерпретируется как Unix‑метка времени с точностью до секунды (количество секунд, прошедших с 1970-01-01 00:00:00 UTC).

Синтаксис

fromUnixTimestamp64Second(value[, timezone])

Аргументы

  • value — Unix-таймстамп в секундах. Int64
  • timezone — Необязательный параметр. Часовой пояс для возвращаемого значения. String

Возвращаемое значение

Возвращает значение DateTime64 с точностью до секунды. DateTime64(0)

Примеры

Пример использования

SELECT fromUnixTimestamp64Second(1640995200)
┌─fromUnixTimestamp64Second(1640995200)─┐
│                   2022-01-01 00:00:00 │
└───────────────────────────────────────┘

parseDateTime

Появилась в версии: v23.3

Разбирает строку с датой и временем в соответствии со строкой формата даты MySQL.

Эта функция является обратной для formatDateTime. Она разбирает аргумент типа String, используя строку формата. Возвращает значение типа DateTime.

Синтаксис

parseDateTime(time_string, format[, timezone])

Псевдонимы: TO_UNIXTIME

Аргументы

  • time_string — Строка, которую нужно преобразовать в DateTime. String
  • format — Строка формата, задающая способ разбора значения time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение DateTime, полученное разбором входной строки в соответствии со строкой формата в стиле MySQL. DateTime

Примеры

Пример использования

SELECT parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTime('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                       2025-01-04 23:00:00 │
└───────────────────────────────────────────────────────────┘

parseDateTime32BestEffort

Появилась в версии: v20.9

Преобразует строковое представление даты и времени в тип данных DateTime.

Функция разбирает форматы ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, формат ClickHouse и некоторые другие форматы даты и времени.

Синтаксис

parseDateTime32BestEffort(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым интерпретируется time_string. String

Возвращаемое значение

Возвращает time_string в виде значения типа DateTime. DateTime

Примеры

Пример использования

SELECT parseDateTime32BestEffort('23/10/2025 12:12:57')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-10-23 12:12:57 │
└───────────────────────────┘

С учётом часового пояса

SELECT parseDateTime32BestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2025-08-18 10:22:16 │
└───────────────────────────┘

Метка времени Unix

SELECT parseDateTime32BestEffort('1284101485')
AS parseDateTime32BestEffort
┌─parseDateTime32BestEffort─┐
│       2015-07-07 12:04:41 │
└───────────────────────────┘

parseDateTime32BestEffortOrNull

Добавлена в: v20.9

Аналогична parseDateTime32BestEffort, за исключением того, что возвращает NULL, если встречает формат даты, который не удаётся обработать.

Синтаксис

parseDateTime32BestEffortOrNull(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым разбирается time_string. String

Возвращаемое значение

Возвращает объект DateTime, полученный разбором строки, или NULL, если разбор не удался. DateTime

Примеры

Пример использования

SELECT
    parseDateTime32BestEffortOrNull('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrNull('invalid date') AS invalid
┌─valid───────────────┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTime32BestEffortOrZero

Добавлена в версии: v20.9

Аналог функции parseDateTime32BestEffort, за исключением того, что при встрече нераспознаваемого формата даты возвращает нулевую дату или нулевое значение даты-времени.

Синтаксис

parseDateTime32BestEffortOrZero(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым разбирается time_string. String

Возвращаемое значение

Возвращает объект DateTime, полученный при разборе строки, или нулевую дату (1970-01-01 00:00:00), если разбор завершается неудачей. DateTime

Примеры

Пример использования

SELECT
    parseDateTime32BestEffortOrZero('23/10/2025 12:12:57') AS valid,
    parseDateTime32BestEffortOrZero('invalid date') AS invalid
┌─valid───────────────┬─invalid─────────────┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTime64

Введена в версии v24.11

Разбирает строку даты и времени с подсекундной точностью в соответствии с форматом даты MySQL.

Эта функция является инверсией функции formatDateTime для DateTime64. Она разбирает аргумент типа String, используя строку формата. Возвращает тип DateTime64, который может представлять даты с 1900 по 2299 год с подсекундной точностью.

Синтаксис

parseDateTime64(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которую нужно преобразовать в DateTime64. String
  • format — Форматная строка, определяющая, как следует разбирать time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение типа DateTime64, полученное путём разбора входной строки в соответствии с форматной строкой в стиле MySQL. DateTime64

Примеры

Пример использования

SELECT parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                       2025-01-04 23:00:00.123       │
└─────────────────────────────────────────────────────────────────────┘

parseDateTime64BestEffort

Добавлено в: v20.1

Аналог функции parseDateTimeBestEffort, но дополнительно разбирает миллисекунды и микросекунды и возвращает тип данных DateTime64.

Синтаксис

parseDateTime64BestEffort(time_string[, precision[, time_zone]])

Аргументы

  • time_string — Строка с датой или датой и временем для преобразования. String
  • precision — Необязательный параметр. Требуемая точность результата: 3 для миллисекунд, 6 для микросекунд. По умолчанию — 3. UInt8
  • time_zone — Необязательный параметр. Часовой пояс. Функция разбирает time_string в соответствии с этим часовым поясом. String

Возвращаемое значение

Возвращает time_string, преобразованную к типу данных DateTime64. DateTime64

Примеры

Пример использования

SELECT parseDateTime64BestEffort('2025-01-01') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',6) AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2025-01-01 01:01:00.12346',3,'Asia/Istanbul') AS a, toTypeName(a) AS t
FORMAT PrettyCompactMonoBlock
┌──────────────────────────a─┬─t──────────────────────────────┐
│ 2025-01-01 01:01:00.123000 │ DateTime64(3)                  │
│ 2025-01-01 00:00:00.000000 │ DateTime64(3)                  │
│ 2025-01-01 01:01:00.123460 │ DateTime64(6)                  │
│ 2025-12-31 22:01:00.123000 │ DateTime64(3, 'Asia/Istanbul') │
└────────────────────────────┴────────────────────────────────┘

parseDateTime64BestEffortOrNull

Добавлена в версии v20.1

То же, что и parseDateTime64BestEffort, но возвращает NULL, если встречает формат даты, который не удаётся обработать.

Синтаксис

parseDateTime64BestEffortOrNull(time_string[, precision[, time_zone]])

Аргументы

  • time_string — Строка, содержащая дату или дату со временем для преобразования. String
  • precision — Необязательный параметр. Требуемая точность: 3 для миллисекунд, 6 для микросекунд. По умолчанию: 3. UInt8
  • time_zone — Необязательный параметр. Часовой пояс. Функция интерпретирует time_string в соответствии с указанным часовым поясом. String

Возвращаемое значение

Возвращает time_string, преобразованную в DateTime64, или NULL, если входное значение не удаётся разобрать. DateTime64 или NULL

Примеры

Пример использования

SELECT parseDateTime64BestEffortOrNull('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrNull('invalid') AS invalid
┌─valid───────────────────┬─invalid─┐
│ 2025-01-01 01:01:00.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortOrZero

Введена в: v20.1

Аналог функции parseDateTime64BestEffort, за исключением того, что при обнаружении формата даты, который не может быть обработан, возвращает нулевую дату или нулевое значение даты-времени.

Синтаксис

parseDateTime64BestEffortOrZero(time_string[, precision[, time_zone]])

Аргументы

  • time_string — Строка, содержащая дату или дату и время для преобразования. String
  • precision — Необязательный аргумент. Требуемая точность: 3 для миллисекунд, 6 для микросекунд. Значение по умолчанию: 3. UInt8
  • time_zone — Необязательный аргумент. Часовой пояс. Функция разбирает time_string в соответствии с указанным часовым поясом. String

Возвращаемое значение

Возвращает time_string, преобразованную в DateTime64, или нулевую дату/дату-время (1970-01-01 00:00:00.000), если входное значение не удаётся разобрать. DateTime64

Примеры

Пример использования

SELECT parseDateTime64BestEffortOrZero('2025-01-01 01:01:00.123') AS valid,
       parseDateTime64BestEffortOrZero('invalid') AS invalid
┌─valid───────────────────┬─invalid─────────────────┐
│ 2025-01-01 01:01:00.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUS

Добавлена в версии: v22.8

Аналогична parseDateTime64BestEffort, за исключением того, что при неоднозначности эта функция предпочитает американский формат даты (MM/DD/YYYY и т. д.).

Синтаксис

parseDateTime64BestEffortUS(time_string [, precision [, time_zone]])

Аргументы

  • time_string — строка, содержащая дату или дату и время для преобразования. String
  • precision — необязательный параметр. Требуемая точность: 3 — для миллисекунд, 6 — для микросекунд. По умолчанию: 3. UInt8
  • time_zone — необязательный параметр. Часовой пояс. Функция интерпретирует time_string в соответствии с указанным часовым поясом. String

Возвращаемое значение

Возвращает time_string, преобразованную в DateTime64, используя американский формат даты по умолчанию в неоднозначных случаях. DateTime64

Примеры

Пример использования

SELECT parseDateTime64BestEffortUS('02/10/2025 12:30:45.123') AS us_format,
       parseDateTime64BestEffortUS('15/08/2025 10:15:30.456') AS fallback_to_standard
┌─us_format───────────────┬─fallback_to_standard────┐
│ 2025-02-10 12:30:45.123 │ 2025-08-15 10:15:30.456 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64BestEffortUSOrNull

Введена в версии: v22.8

Аналогична функции parseDateTime64BestEffort, за исключением того, что при неоднозначности эта функция отдаёт предпочтение американскому формату дат (MM/DD/YYYY и т. д.) и возвращает NULL, если встречает формат даты, который не может быть обработан.

Синтаксис

parseDateTime64BestEffortUSOrNull(time_string[, precision[, time_zone]])

Аргументы

  • time_string — Строка, содержащая дату или дату и время для преобразования. String
  • precision — Необязательный параметр. Требуемая точность. 3 для миллисекунд, 6 для микросекунд. По умолчанию: 3. UInt8
  • time_zone — Необязательный параметр. Часовой пояс. Функция разбирает time_string с учетом этого часового пояса. String

Возвращаемое значение

Возвращает time_string, преобразованную в DateTime64 с использованием американского формата даты и времени, или NULL, если входное значение не удается разобрать. DateTime64 или NULL

Примеры

Пример использования

SELECT parseDateTime64BestEffortUSOrNull('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrNull('invalid') AS invalid
┌─valid_us────────────────┬─invalid─┐
│ 2025-02-10 12:30:45.123 │    ᴺᵁᴸᴸ │
└─────────────────────────┴─────────┘

parseDateTime64BestEffortUSOrZero

Введено в версии: v22.8

Аналог функции parseDateTime64BestEffort, за исключением того, что при неоднозначной интерпретации эта функция предпочитает формат даты, принятый в США (MM/DD/YYYY и т. д.), и возвращает нулевую дату или нулевое значение даты-времени, когда встречает формат даты, который не удаётся обработать.

Синтаксис

parseDateTime64BestEffortUSOrZero(time_string [, precision [, time_zone]])

Аргументы

  • time_string — Строка, содержащая дату или дату и время для преобразования. String
  • precision — Необязательный параметр. Требуемая точность: 3 для миллисекунд, 6 для микросекунд. Значение по умолчанию: 3. UInt8
  • time_zone — Необязательный параметр. Часовой пояс. Функция парсит time_string в соответствии с этим часовым поясом. String

Возвращаемое значение

Возвращает time_string, преобразованную в DateTime64 с использованием формата США, или нулевое значение даты/даты-времени (1970-01-01 00:00:00.000), если не удаётся разобрать входную строку. DateTime64

Примеры

Пример использования

SELECT parseDateTime64BestEffortUSOrZero('02/10/2025 12:30:45.123') AS valid_us,
       parseDateTime64BestEffortUSOrZero('invalid') AS invalid
┌─valid_us────────────────┬─invalid─────────────────┐
│ 2025-02-10 12:30:45.123 │ 1970-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘

parseDateTime64InJodaSyntax

Добавлено в: v24.10

Разбирает строку даты и времени с субсекундной точностью в соответствии со строкой формата даты в стиле Joda.

Эта функция является обратной функцией к formatDateTimeInJodaSyntax для DateTime64. Она парсит аргумент типа String, используя форматную строку в стиле Joda. Возвращает значение типа DateTime64, которое может представлять даты с 1900 по 2299 год с субсекундной точностью.

См. документацию Joda Time для описания шаблонов форматов.

Синтаксис

parseDateTime64InJodaSyntax(time_string, format[, timezone])

Аргументы

  • time_string — Строка, подлежащая преобразованию в DateTime64. String
  • format — Строка формата в синтаксисе Joda, определяющая, как интерпретировать time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение типа DateTime64, полученное из входной строки в соответствии со строкой формата в стиле Joda. DateTime64

Примеры

Пример использования

SELECT parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntax('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                          2025-01-04 23:00:00.123   │
└────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrNull

Добавлено в версии: v24.10

То же, что и parseDateTime64InJodaSyntax, но возвращает NULL, если не удаётся разобрать дату в заданном формате.

Синтаксис

parseDateTime64InJodaSyntaxOrNull(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которая будет разобрана в DateTime64. String
  • format — Строка формата в синтаксисе Joda, определяющая способ разбора time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение DateTime64, полученное из входной строки, или NULL, если разбор не удался. Nullable(DateTime64)

Примеры

Пример использования

SELECT parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrNull('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                             2025-01-04 23:00:00.123      │
└──────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64InJodaSyntaxOrZero

Введена в версии v24.10

Аналог функции parseDateTime64InJodaSyntax, но возвращает нулевую дату, когда встречает формат даты, который не удаётся разобрать.

Синтаксис

parseDateTime64InJodaSyntaxOrZero(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которую нужно преобразовать в DateTime64. String
  • format — Строка формата в синтаксисе Joda, определяющая, как разбирать time_string. String
  • timezone — Необязательный аргумент. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime64, полученный из входной строки, или нулевой DateTime64, если разбор не удался. DateTime64

Примеры

Пример использования

SELECT parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')
┌─parseDateTime64InJodaSyntaxOrZero('2025-01-04 23:00:00.123', 'yyyy-MM-dd HH:mm:ss.SSS')─┐
│                                                              2025-01-04 23:00:00.123     │
└──────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrNull

Добавлена в: v24.11

Аналог функции parseDateTime64, но возвращает NULL, когда встречает дату в нераспознаваемом формате.

Синтаксис

parseDateTime64OrNull(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которую нужно разобрать в DateTime64. String
  • format — Строка формата, задающая способ разбора time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime64, полученный при разборе входной строки, или NULL, если разбор не удался. Nullable(DateTime64)

Примеры

Пример использования

SELECT parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrNull('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                            2025-01-04 23:00:00.123        │
└───────────────────────────────────────────────────────────────────────────┘

parseDateTime64OrZero

Введена в версии v24.11

Аналог функции parseDateTime64, но возвращает нулевую дату, если встречает неподдающийся разбору формат даты.

Синтаксис

parseDateTime64OrZero(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которая будет преобразована в значение типа DateTime64. String
  • format — Строка формата, задающая способ разбора time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение типа DateTime64, полученное из входной строки, или нулевое значение типа DateTime64, если разбор не удался. DateTime64

Примеры

Пример использования

SELECT parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')
┌─parseDateTime64OrZero('2025-01-04 23:00:00.123', '%Y-%m-%d %H:%i:%s.%f')─┐
│                                             2025-01-04 23:00:00.123       │
└───────────────────────────────────────────────────────────────────────────┘

parseDateTimeBestEffort

Впервые представлено в: v1.1

Преобразует дату и время в строковом представлении в тип данных DateTime. Функция разбирает форматы ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, форматы ClickHouse и некоторые другие форматы даты и времени.

Поддерживаемые нестандартные форматы:

  • Строка, содержащая 9..10-значный UNIX timestamp.
  • Строка с компонентами даты и времени: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss и т. д.
  • Строка с датой без компонента времени: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY и т. д.
  • Строка с днём и временем: DD, DD hh, DD hh:mm. В этом случае для MM подставляется значение 01.
  • Строка, включающая дату и время вместе с информацией о смещении часового пояса: YYYY-MM-DD hh:mm:ss ±h:mm и т. д.
  • Метка времени в формате syslog: Mmm dd hh:mm:ss. Например, Jun 9 14:20:32.

Для всех форматов с разделителем функция разбирает названия месяцев, указанные полностью или в виде первых трёх букв названия месяца. Если год не указан, считается, что он равен текущему году.

Синтаксис

parseDateTimeBestEffort(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым разбирается time_string. String

Возвращаемое значение

Возвращает time_string в виде DateTime. DateTime

Примеры

Пример использования

SELECT parseDateTimeBestEffort('23/10/2025 12:12:57') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-10-23 12:12:57 │
└─────────────────────────┘

С учетом часового пояса

SELECT parseDateTimeBestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-08-18 10:22:16 │
└─────────────────────────┘

Unix-время

SELECT parseDateTimeBestEffort('1735689600') AS parseDateTimeBestEffort
┌─parseDateTimeBestEffort─┐
│     2025-01-01 00:00:00 │
└─────────────────────────┘

parseDateTimeBestEffortOrNull

Впервые появилась в: v1.1

То же, что и parseDateTimeBestEffort, за исключением того, что функция возвращает NULL, когда встречает формат даты, который не может быть обработан. Функция разбирает ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, форматы дат и времени ClickHouse, а также некоторые другие форматы.

Поддерживаемые нестандартные форматы:

  • Строка, содержащая 9..10-значный Unix timestamp.
  • Строка с компонентами даты и времени: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss и т. д.
  • Строка с датой без компонента времени: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY и т. д.
  • Строка с днём и временем: DD, DD hh, DD hh:mm. В этом случае вместо MM подставляется 01.
  • Строка, включающая дату и время вместе с информацией о смещении часового пояса: YYYY-MM-DD hh:mm:ss ±h:mm и т. д.
  • Временная метка syslog: Mmm dd hh:mm:ss. Например, Jun 9 14:20:32.

Для всех форматов с разделителем функция разбирает названия месяцев как по полному написанию, так и по первым трём буквам. Если год не указан, считается, что он равен текущему году.

Синтаксис

parseDateTimeBestEffortOrNull(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым интерпретируется time_string. String

Возвращаемое значение

Возвращает time_string в виде DateTime или NULL, если входное значение не удаётся разобрать. DateTime или NULL

Примеры

Пример использования

SELECT parseDateTimeBestEffortOrNull('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrNull('invalid') AS invalid
┌─valid───────────────┬─invalid─┐
│ 2025-10-23 12:12:57 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortOrZero

Введена в: v1.1

Аналог функции parseDateTimeBestEffort, за исключением того, что она возвращает нулевую дату или нулевое значение дата-время, когда встречает формат даты, который не может быть обработан. Функция разбирает форматы ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, форматы ClickHouse и некоторые другие форматы даты и времени.

Поддерживаемые нестандартные форматы:

  • Строка, содержащая 9..10-значную UNIX-временную метку.
  • Строка с компонентами даты и времени: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss и т. д.
  • Строка с датой, но без компонента времени: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY и т. д.
  • Строка с днём и временем: DD, DD hh, DD hh:mm. В этом случае для MM подставляется значение 01.
  • Строка, которая включает дату и время вместе с информацией о смещении часового пояса: YYYY-MM-DD hh:mm:ss ±h:mm и т. д.
  • Временная метка в формате syslog: Mmm dd hh:mm:ss. Например, Jun 9 14:20:32.

Для всех форматов с разделителями функция разбирает названия месяцев, указанные полностью или первыми тремя буквами названия месяца. Если год не указан, считается, что он равен текущему году.

Синтаксис

parseDateTimeBestEffortOrZero(time_string[, time_zone])

Аргументы

  • time_string — Строка, содержащая дату и время для преобразования. String
  • time_zone — Необязательный аргумент. Часовой пояс, в соответствии с которым интерпретируется time_string. String

Возвращаемое значение

Возвращает time_string как DateTime или нулевую дату/дату-время (1970-01-01 или 1970-01-01 00:00:00), если значение не удаётся разобрать. DateTime

Примеры

Пример использования

SELECT parseDateTimeBestEffortOrZero('23/10/2025 12:12:57') AS valid,
       parseDateTimeBestEffortOrZero('invalid') AS invalid
┌─valid───────────────┬─invalid─────────────┐
│ 2025-10-23 12:12:57 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeBestEffortUS

Введена в: v1.1

Эта функция ведет себя так же, как parseDateTimeBestEffort для ISO-форматов дат, например YYYY-MM-DD hh:mm:ss, а также других форматов дат, где компоненты месяца и дня могут быть однозначно извлечены, например YYYYMMDDhhmmss, YYYY-MM, DD hh или YYYY-MM-DD hh:mm:ss ±h:mm. Если компоненты месяца и дня не могут быть однозначно извлечены, например MM/DD/YYYY, MM-DD-YYYY или MM-DD-YY, функция отдает предпочтение формату даты США вместо DD/MM/YYYY, DD-MM-YYYY или DD-MM-YY. В качестве исключения из предыдущего утверждения, если месяц больше 12 и меньше либо равен 31, эта функция переходит к поведению parseDateTimeBestEffort, например 15/08/2020 разбирается как 2020-08-15.

Синтаксис

parseDateTimeBestEffortUS(time_string[, time_zone])

Аргументы

  • time_string — строка, содержащая дату и время для преобразования. String
  • time_zone — необязательный параметр. Часовой пояс, в соответствии с которым разбирается time_string. String

Возвращаемое значение

Возвращает time_string как DateTime, отдавая предпочтение американскому формату даты в неоднозначных случаях. DateTime

Примеры

Пример использования

SELECT parseDateTimeBestEffortUS('02/10/2025') AS us_format,
       parseDateTimeBestEffortUS('15/08/2025') AS fallback_to_standard
┌─us_format───────────┬─fallback_to_standard─┐
│ 2025-02-10 00:00:00 │  2025-08-15 00:00:00 │
└─────────────────────┴──────────────────────┘

parseDateTimeBestEffortUSOrNull

Впервые представлена в версии v1.1

Аналог функции parseDateTimeBestEffortUS, за исключением того, что она возвращает NULL, когда встречает формат даты, который не может быть обработан.

Эта функция ведёт себя как parseDateTimeBestEffort для ISO-форматов дат, но в неоднозначных случаях предпочитает американский формат дат, возвращая NULL при ошибках разбора.

Синтаксис

parseDateTimeBestEffortUSOrNull(time_string[, time_zone])

Аргументы

  • time_string — Строка, содержащая дату и время для преобразования. String
  • time_zone — Необязательный параметр. Часовой пояс, в соответствии с которым интерпретируется time_string. String

Возвращаемое значение

Возвращает time_string как DateTime с приоритетом американских форматов дат или NULL, если входное значение не удаётся разобрать. DateTime или NULL

Примеры

Пример использования

SELECT parseDateTimeBestEffortUSOrNull('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrNull('invalid') AS invalid
┌─valid_us────────────┬─invalid─┐
│ 2025-02-10 00:00:00 │    ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘

parseDateTimeBestEffortUSOrZero

Добавлено в версии: v1.1

Аналог функции parseDateTimeBestEffortUS, но возвращает нулевую дату (1970-01-01) или нулевую дату со временем (1970-01-01 00:00:00), если встречает формат даты, который не может быть обработан.

Эта функция ведет себя так же, как parseDateTimeBestEffort для форматов дат ISO, но в неоднозначных случаях предпочитает американский формат даты и возвращает нулевое значение при ошибках парсинга.

Синтаксис

parseDateTimeBestEffortUSOrZero(time_string[, time_zone])

Аргументы

  • time_string — Строка, содержащая дату и время для преобразования. String
  • time_zone — Необязательный. Часовой пояс, в соответствии с которым разбирается time_string. String

Возвращаемое значение

Возвращает time_string как DateTime, используя формат даты и времени, принятый в США, или нулевую дату/дату-время (1970-01-01 или 1970-01-01 00:00:00), если входное значение не удаётся разобрать. DateTime

Примеры

Пример использования

SELECT parseDateTimeBestEffortUSOrZero('02/10/2025') AS valid_us,
       parseDateTimeBestEffortUSOrZero('invalid') AS invalid
┌─valid_us────────────┬─invalid─────────────┐
│ 2025-02-10 00:00:00 │ 1970-01-01 00:00:00 │
└─────────────────────┴─────────────────────┘

parseDateTimeInJodaSyntax

Появилась в версии v23.3

Разбирает строку с датой и временем в соответствии со строкой формата даты Joda.

Эта функция является обратной к formatDateTimeInJodaSyntax. Она разбирает строковый аргумент, используя строку формата в стиле Joda. Возвращает тип DateTime.

Обратитесь к документации Joda Time для ознакомления с шаблонами форматов.

Синтаксис

parseDateTimeInJodaSyntax(time_string, format[, timezone])

Аргументы

  • time_string — Строка для преобразования в DateTime. String
  • format — Строка формата в синтаксисе Joda, определяющая, как разбирать time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает значение типа DateTime, полученное из входной строки в соответствии со строкой формата в стиле Joda. DateTime

Примеры

Пример использования

SELECT parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntax('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                      2025-01-04 23:00:00 │
└──────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrNull

Введена в: v23.3

Аналог функции parseDateTimeInJodaSyntax, но возвращает NULL при непарсируемом формате даты.

Синтаксис

parseDateTimeInJodaSyntaxOrNull(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которая будет преобразована в DateTime. String
  • format — Строка формата в синтаксисе Joda, задающая способ разбора time_string. String
  • timezone — Необязательный аргумент. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime, полученный из входной строки, или NULL, если разбор завершается неудачно. Nullable(DateTime)

Примеры

Пример использования

SELECT parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrNull('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                         2025-01-04 23:00:00    │
└────────────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrZero

Добавлена в: v23.3

Аналог функции parseDateTimeInJodaSyntax, но возвращает нулевую дату, если встречает неподдающийся разбору формат даты.

Синтаксис

parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])

Аргументы

  • time_string — Строка для разбора в DateTime. String
  • format — Строка формата в синтаксисе Joda, задающая способ разбора time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime, полученный из входной строки, или нулевой DateTime, если разбор не удался. DateTime

Примеры

Пример использования

SELECT parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')
┌─parseDateTimeInJodaSyntaxOrZero('2025-01-04 23:00:00', 'yyyy-MM-dd HH:mm:ss')─┐
│                                                          2025-01-04 23:00:00   │
└────────────────────────────────────────────────────────────────────────────────┘

parseDateTimeOrNull

Добавлено в: v23.3

Аналог parseDateTime, но возвращает NULL, когда встречает некорректный формат даты.

Синтаксис

parseDateTimeOrNull(time_string, format[, timezone])

Псевдонимы: str_to_date

Аргументы

  • time_string — Строка для разбора в DateTime. String
  • format — Строка формата, определяющая, как следует разбирать time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime, полученный разбором входной строки, или NULL, если разбор не удался. Nullable(DateTime)

Примеры

Пример использования

SELECT parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrNull('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                            2025-01-04 23:00:00  │
└─────────────────────────────────────────────────────────────────┘

parseDateTimeOrZero

Впервые появилась в версии v23.3

Аналог функции parseDateTime, но возвращает нулевую дату, если встречает дату в формате, который невозможно разобрать.

Синтаксис

parseDateTimeOrZero(time_string, format[, timezone])

Аргументы

  • time_string — Строка, которая будет преобразована в DateTime. String
  • format — Строка формата, задающая способ разбора time_string. String
  • timezone — Необязательный параметр. Часовой пояс. String

Возвращаемое значение

Возвращает DateTime, полученный из входной строки, или нулевое значение DateTime, если разбор не удался. DateTime

Примеры

Пример использования

SELECT parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')
┌─parseDateTimeOrZero('2025-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                             2025-01-04 23:00:00 │
└─────────────────────────────────────────────────────────────────┘

reinterpret

Добавлено в версии v1.1

Использует ту же исходную последовательность байт в памяти для заданного значения x и переинтерпретирует её как значение целевого типа.

Синтаксис

reinterpret(x, type)

Аргументы

  • x — Произвольный тип. Any
  • type — Целевой тип. Если это массив, тип элементов массива должен иметь фиксированную длину. String

Возвращаемое значение

Значение целевого типа. Any

Примеры

Пример использования

SELECT reinterpret(toInt8(-1), 'UInt8') AS int_to_uint,
    reinterpret(toInt8(1), 'Float32') AS int_to_float,
    reinterpret('1', 'UInt32') AS string_to_int
┌─int_to_uint─┬─int_to_float─┬─string_to_int─┐
│         255 │        1e-45 │            49 │
└─────────────┴──────────────┴───────────────┘

Пример с массивом

SELECT reinterpret(x'3108b4403108d4403108b4403108d440', 'Array(Float32)') AS string_to_array_of_Float32
┌─string_to_array_of_Float32─┐
│ [5.626,6.626,5.626,6.626]  │
└────────────────────────────┘

reinterpretAsDate

Введена в версии: v1.1

Переинтерпретирует входное значение как значение типа Date (предполагается порядок байт little endian), представляющее собой количество дней с начала Unix-эпохи 1970-01-01.

Синтаксис

reinterpretAsDate(x)

Аргументы

Возвращаемое значение

Дата. Date

Примеры

Пример использования

SELECT reinterpretAsDate(65), reinterpretAsDate('A')
┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│            1970-03-07 │             1970-03-07 │
└───────────────────────┴────────────────────────┘

reinterpretAsDateTime

Введена в версии: v1.1

Интерпретирует входное значение как значение типа DateTime (предполагая порядок байт little endian), которое представляет собой количество дней, прошедших с начала эпохи Unix (1970-01-01).

Синтаксис

reinterpretAsDateTime(x)

Аргументы

Возвращаемое значение

Дата и время. DateTime

Примеры

Пример использования

SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A')
┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│       1970-01-01 01:01:05 │        1970-01-01 01:01:05 │
└───────────────────────────┴────────────────────────────┘

reinterpretAsFixedString

Впервые появилась в версии v1.1

Интерпретирует входное значение как строку фиксированной длины (при условии порядка байтов little endian). Нулевые байты в конце игнорируются, например, для значения UInt32 255 функция возвращает строку из одного символа.

Синтаксис

reinterpretAsFixedString(x)

Аргументы

  • x — Значение для переинтерпретации в строку. (U)Int* или Float* или Date или DateTime

Возвращаемое значение

Фиксированная строка, содержащая байты, соответствующие x. FixedString

Примеры

Пример использования

SELECT
    reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsFixedString(toDate('1970-03-07'))
┌─reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsFixedString(toDate('1970-03-07'))─┐
│ A                                                           │ A                                              │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘

reinterpretAsFloat32

Была добавлена в версии: v1.1

Интерпретирует входное значение как значение типа Float32. В отличие от CAST, функция не пытается сохранять исходное значение — если целевой тип не может представить значение исходного типа, результат является неопределённым.

Синтаксис

reinterpretAsFloat32(x)

Аргументы

Возвращаемое значение

Возвращает значение x после переинтерпретации. Float32

Примеры

Пример использования

SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x)
┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │                     0.2 │
└────────────┴─────────────────────────┘

reinterpretAsFloat64

Впервые представлена в версии: v1.1

Переинтерпретирует входное значение как значение типа Float64. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат не определён.

Синтаксис

reinterpretAsFloat64(x)

Аргументы

Возвращаемое значение

Возвращает значение x после переинтерпретации. Float64

Примеры

Пример использования

SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x)
┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │                     0.2 │
└─────────────────────┴─────────────────────────┘

reinterpretAsInt128

Введена в версии: v1.1

Интерпретирует входное значение как значение типа Int128. В отличие от CAST, функция не пытается сохранить исходное значение — если в целевом типе невозможно представить входное значение, результат не определён.

Синтаксис

reinterpretAsInt128(x)

Аргументы

Возвращаемое значение

Возвращает значение x, интерпретированное как Int128.

Примеры

Пример использования

SELECT
    toInt64(257) AS x,
    toTypeName(x),
    reinterpretAsInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64         │ 257 │ Int128          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt16

Введена в версии: v1.1

Интерпретирует входное значение как значение типа Int16. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить значение входного типа, результат не определён.

Синтаксис

reinterpretAsInt16(x)

Аргументы

Возвращаемое значение

Возвращает значение x, переинтерпретированное как Int16.

Примеры

Пример использования

SELECT
    toInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8          │   1 │ Int16           │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsInt256

Впервые добавлена в версии: v1.1

Переинтерпретирует входное значение как значение типа Int256. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить значение входного типа, результат не определён.

Синтаксис

reinterpretAsInt256(x)

Аргументы

Возвращаемое значение

Возвращает значение x, интерпретированное как Int256.

Примеры

Пример использования

SELECT
    toInt128(257) AS x,
    toTypeName(x),
    reinterpretAsInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128        │ 257 │ Int256          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt32

Введена в версии: v1.1

Интерпретирует входное значение как значение типа Int32. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить значение исходного типа, результат не определён.

Синтаксис

reinterpretAsInt32(x)

Аргументы

Возвращаемое значение

Возвращает переинтерпретированное значение x. Int32

Примеры

Пример использования

SELECT
    toInt16(257) AS x,
    toTypeName(x),
    reinterpretAsInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16         │ 257 │ Int32           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt64

Введена в версии: v1.1

Переинтерпретирует входное значение как значение типа Int64. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить значение входного типа, результат не определён.

Синтаксис

reinterpretAsInt64(x)

Аргументы

Возвращаемое значение

Возвращает значение x, интерпретированное как тип Int64.

Примеры

Пример использования

SELECT
    toInt32(257) AS x,
    toTypeName(x),
    reinterpretAsInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32         │ 257 │ Int64           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt8

Введена в версии v1.1

Интерпретирует входное значение как значение типа Int8. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат неопределён.

Синтаксис

reinterpretAsInt8(x)

Аргументы

Возвращаемое значение

Возвращает значение x, переинтерпретированное как Int8.

Примеры

Пример использования

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt8(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ Int8            │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsString

Введена в: v1.1

Переинтерпретирует входное значение как строку (предполагается порядок байт little-endian). Нулевые байты в конце игнорируются, например, для значения UInt32, равного 255, функция возвращает строку с одним символом.

Синтаксис

reinterpretAsString(x)

Аргументы

  • x — значение, которое нужно переинтерпретировать в строку. (U)Int* или Float* или Date или DateTime

Возвращаемое значение

Строка, содержащая байты, представляющие значение x. String

Примеры

Пример использования

SELECT
    reinterpretAsString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsString(toDate('1970-03-07'))
┌─reinterpretAsString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsString(toDate('1970-03-07'))─┐
│ A                                                      │ A                                         │
└────────────────────────────────────────────────────────┴───────────────────────────────────────────┘

reinterpretAsUInt128

Введено в: v1.1

Интерпретирует входное значение как значение типа UInt128. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входной тип, результат является неопределённым.

Синтаксис

reinterpretAsUInt128(x)

Аргументы

Возвращаемое значение

Возвращает значение x, переинтерпретированное как UInt128.

Примеры

Пример использования

SELECT
    toUInt64(257) AS x,
    toTypeName(x),
    reinterpretAsUInt128(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64        │ 257 │ UInt128         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt16

Добавлена в: v1.1

Переинтерпретирует входное значение как значение типа UInt16. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат не определён.

Синтаксис

reinterpretAsUInt16(x)

Аргументы

Возвращаемое значение

Возвращает значение x после переинтерпретации. UInt16

Примеры

Пример использования

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsUInt16(x) AS res,
    toTypeName(res)
┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ UInt16          │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt256

Добавлена в версии: v1.1

Интерпретирует входное значение как значение типа UInt256. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат не определен.

Синтаксис

reinterpretAsUInt256(x)

Аргументы

Возвращаемое значение

Возвращает переинтерпретированное значение x типа UInt256.

Примеры

Пример использования

SELECT
    toUInt128(257) AS x,
    toTypeName(x),
    reinterpretAsUInt256(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128       │ 257 │ UInt256         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt32

Введена в: v1.1

Интерпретирует входное значение как значение типа UInt32. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат не определён.

Синтаксис

reinterpretAsUInt32(x)

Аргументы

Возвращаемое значение

Возвращает значение x после переинтерпретации. UInt32

Примеры

Пример использования

SELECT
    toUInt16(257) AS x,
    toTypeName(x),
    reinterpretAsUInt32(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16        │ 257 │ UInt32          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt64

Введена в версии: v1.1

Интерпретирует входное значение как значение типа UInt64. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить входное значение, результат не определён.

Синтаксис

reinterpretAsUInt64(x)

Аргументы

Возвращаемое значение

Возвращает значение x, интерпретированное как UInt64.

Примеры

Пример использования

SELECT
    toUInt32(257) AS x,
    toTypeName(x),
    reinterpretAsUInt64(x) AS res,
    toTypeName(res)
┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32        │ 257 │ UInt64          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt8

Введена в версии: v1.1

Переинтерпретирует входное значение как значение типа UInt8. В отличие от CAST, функция не пытается сохранить исходное значение — если целевой тип не может представить значения входного типа, результат является неопределённым.

Синтаксис

reinterpretAsUInt8(x)

Аргументы

Возвращаемое значение

Возвращает x, переинтерпретированное как UInt8.

Примеры

Пример использования

SELECT
    toInt8(-1) AS val,
    toTypeName(val),
    reinterpretAsUInt8(val) AS res,
    toTypeName(res);
┌─val─┬─toTypeName(val)─┬─res─┬─toTypeName(res)─┐
│  -1 │ Int8            │ 255 │ UInt8           │
└─────┴─────────────────┴─────┴─────────────────┘

reinterpretAsUUID

Введена в версии: v1.1

Принимает строку из 16 байт и возвращает UUID, интерпретируя каждую 8-байтную половину в порядке байтов little-endian. Если строка короче, функция работает так, как будто строка дополнена в конец необходимым количеством нулевых байтов. Если строка длиннее 16 байт, лишние байты в конце игнорируются.

Синтаксис

reinterpretAsUUID(fixed_string)

Аргументы

  • fixed_string — байтовая строка в формате big-endian. FixedString

Возвращаемое значение

Значение типа UUID. UUID

Примеры

Строка в UUID

SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))
┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│                                  08090a0b-0c0d-0e0f-0001-020304050607 │
└───────────────────────────────────────────────────────────────────────┘

toBFloat16

Добавлена в версии v1.1

Преобразует входное значение в значение типа BFloat16. Выбрасывает исключение при ошибке.

См. также:

Синтаксис

toBFloat16(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 16-битное значение формата brain floating point. BFloat16

Примеры

Пример использования

SELECT
toBFloat16(toFloat32(42.7)),
toBFloat16(toFloat32('42.7')),
toBFloat16('42.7')
FORMAT Vertical;
toBFloat16(toFloat32(42.7)): 42.5
toBFloat16(t⋯32('42.7')):    42.5
toBFloat16('42.7'):          42.5

toBFloat16OrNull

Введена в версии v1.1

Преобразует входное значение типа String в значение типа BFloat16. Если строка не представляет собой число с плавающей запятой, функция возвращает NULL.

Поддерживаемые аргументы:

  • Строковые представления числовых значений.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления двоичных и шестнадцатеричных значений.
  • Числовые значения.
Примечание

Функция допускает незаметную потерю точности при преобразовании из строкового представления.

См. также:

Синтаксис

toBFloat16OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 16-битное значение формата BFloat16, иначе NULL. BFloat16 или NULL

Примеры

Пример использования

SELECT toBFloat16OrNull('0x5E'), -- unsupported arguments
       toBFloat16OrNull('12.3'), -- typical use
       toBFloat16OrNull('12.3456789') -- silent loss of precision
\N
12.25
12.3125

toBFloat16OrZero

Добавлена в: v1.1

Преобразует входное значение типа String в значение типа BFloat16. Если строка не представляет собой число с плавающей запятой, функция возвращает ноль.

Поддерживаемые аргументы:

  • Строковые представления числовых значений.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления двоичных и шестнадцатеричных чисел.
  • Числовые значения.
Примечание

Функция допускает бесшумную потерю точности при преобразовании из строкового представления.

См. также:

Синтаксис

toBFloat16OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 16-битное значение типа brain floating point, иначе 0. BFloat16

Примеры

Пример использования

SELECT toBFloat16OrZero('0x5E'), -- unsupported arguments
       toBFloat16OrZero('12.3'), -- typical use
       toBFloat16OrZero('12.3456789') -- silent loss of precision
0
12.25
12.3125

toBool

Введена в версии v22.2.

Преобразует входное значение в значение типа Bool.

Синтаксис

toBool(expr)

Аргументы

  • expr — выражение, возвращающее число или строку. Для строк принимает 'true' или 'false' (без учета регистра). (U)Int* или Float* или String или Expression

Возвращаемое значение

Возвращает true или false на основе результата вычисления аргумента. Bool

Примеры

Пример использования

SELECT
    toBool(toUInt8(1)),
    toBool(toInt8(-1)),
    toBool(toFloat32(1.01)),
    toBool('true'),
    toBool('false'),
    toBool('FALSE')
FORMAT Vertical
toBool(toUInt8(1)):      true
toBool(toInt8(-1)):      true
toBool(toFloat32(1.01)): true
toBool('true'):          true
toBool('false'):         false
toBool('FALSE'):         false

toDate

Введена в версии: v1.1

Преобразует входное значение в тип Date. Поддерживает преобразование из типов String, FixedString, DateTime или числовых типов.

Синтаксис

toDate(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное значение. Date

Примеры

Преобразование значения типа String в Date

SELECT toDate('2025-04-15')
2025-04-15

Преобразование из DateTime в Date

SELECT toDate(toDateTime('2025-04-15 10:30:00'))
2025-04-15

Преобразование целого числа в дату (Date)

SELECT toDate(20297)
2025-07-28

toDate32

Введена в версии: v21.9

Преобразует аргумент к типу данных Date32. Если значение выходит за пределы допустимого диапазона, toDate32 возвращает граничные значения, поддерживаемые Date32. Если аргумент имеет тип Date, его границы также учитываются.

Синтаксис

toDate32(expr)

Аргументы

  • expr — значение, которое нужно преобразовать. String или UInt32 или Date

Возвращаемое значение

Возвращает календарную дату типа Date32.

Примеры

В пределах допустимого диапазона

SELECT toDate32('2025-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:           2025-01-01
toTypeName(value): Date32

За пределами диапазона

SELECT toDate32('1899-01-01') AS value, toTypeName(value)
FORMAT Vertical
Row 1:
──────
value:           1900-01-01
toTypeName(value): Date32

toDate32OrDefault

Введена в: v21.11

Преобразует аргумент к типу данных Date32. Если значение выходит за допустимый диапазон, toDate32OrDefault возвращает нижнюю границу диапазона, поддерживаемого Date32. Если аргумент имеет тип Date, дополнительно учитываются его границы диапазона. Возвращает значение по умолчанию, если получен некорректный аргумент.

Синтаксис

toDate32OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, которое возвращается, если разбор не удался. Date32

Возвращаемое значение

Значение типа Date32 при успешном преобразовании, в противном случае возвращается значение по умолчанию, если оно передано, или 1900-01-01, если нет. Date32

Примеры

Успешное преобразование

SELECT toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))
1930-01-01

Ошибка преобразования

SELECT toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))
2020-01-01

toDate32OrNull

Введена в: v21.9

Преобразует входное значение в тип Date32, но возвращает NULL, если передан недопустимый аргумент. Аналогична toDate32, но возвращает NULL, если передан недопустимый аргумент.

Синтаксис

toDate32OrNull(x)

Аргументы

  • x — строковое представление даты. String

Возвращаемое значение

Возвращает значение типа Date32 при успешном выполнении, иначе NULL. Date32 или NULL

Примеры

Пример использования

SELECT toDate32OrNull('2025-01-01'), toDate32OrNull('invalid')
┌─toDate32OrNull('2025-01-01')─┬─toDate32OrNull('invalid')─┐
│                   2025-01-01 │                      ᴺᵁᴸᴸ │
└──────────────────────────────┴───────────────────────────┘

toDate32OrZero

Добавлена в версии: v21.9

Преобразует входное значение в значение типа Date32, но возвращает нижнюю границу Date32, если получен некорректный аргумент. Аналогично toDate32, но возвращает нижнюю границу Date32, если получен некорректный аргумент.

См. также:

Синтаксис

toDate32OrZero(x)

Аргументы

  • x — строковое представление даты. String

Возвращаемое значение

Возвращает значение типа Date32 в случае успешного преобразования, в противном случае — нижнюю границу типа Date32 (1900-01-01). Date32

Примеры

Пример использования

SELECT toDate32OrZero('2025-01-01'), toDate32OrZero('')
┌─toDate32OrZero('2025-01-01')─┬─toDate32OrZero('')─┐
│                   2025-01-01 │         1900-01-01 │
└──────────────────────────────┴────────────────────┘

toDateOrDefault

Введена в версии: v21.11

Аналог функции toDate, но при неуспешном преобразовании возвращает значение по умолчанию — либо второй аргумент (если указан), либо нижнюю границу диапазона типа Date.

Синтаксис

toDateOrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, которое возвращается при неудачной попытке разбора. Date

Возвращаемое значение

Значение типа Date при успешном преобразовании, в противном случае — значение по умолчанию, если оно указано, или 1970-01-01, если не указано. Date

Примеры

Успешное преобразование

SELECT toDateOrDefault('2022-12-30')
2022-12-30

Ошибка преобразования

SELECT toDateOrDefault('', CAST('2023-01-01', 'Date'))
2023-01-01

toDateOrNull

Добавлено в версии: v1.1

Преобразует входное значение в значение типа Date, но возвращает NULL, если получен недопустимый аргумент. То же, что и toDate, но возвращает NULL, если получен недопустимый аргумент.

Синтаксис

toDateOrNull(x)

Аргументы

  • x — Строковое представление даты. String

Возвращаемое значение

Возвращает значение типа Date, если преобразование прошло успешно, в противном случае — NULL. Date или NULL

Примеры

Пример использования

SELECT toDateOrNull('2025-12-30'), toDateOrNull('invalid')
┌─toDateOrNull('2025-12-30')─┬─toDateOrNull('invalid')─┐
│                 2025-12-30 │                   ᴺᵁᴸᴸ │
└────────────────────────────┴────────────────────────┘

toDateOrZero

Введена в: v1.1

Преобразует входное значение в значение типа Date, но возвращает нижнюю границу Date, если получен некорректный аргумент. То же самое, что и toDate, но возвращает нижнюю границу Date, если получен некорректный аргумент.

См. также:

Синтаксис

toDateOrZero(x)

Аргументы

  • x — Строковое представление даты. String

Возвращаемое значение

Возвращает значение типа Date при успешном преобразовании, в противном случае — нижнюю границу типа Date (1970-01-01). Date

Примеры

Пример использования

SELECT toDateOrZero('2025-12-30'), toDateOrZero('')
┌─toDateOrZero('2025-12-30')─┬─toDateOrZero('')─┐
│                 2025-12-30 │       1970-01-01 │
└────────────────────────────┴──────────────────┘

toDateTime

Введён в версии: v1.1

Преобразует входное значение к типу DateTime.

Примечание

Если expr — число, оно интерпретируется как количество секунд с начала эпохи Unix (как отметка времени Unix). Если exprString, оно может быть интерпретировано как отметка времени Unix или как строковое представление даты / даты и времени. Таким образом, разбор коротких строковых представлений чисел (до 4 цифр) явно отключён из-за неоднозначности: например, строка '1999' может быть как годом (неполным строковым представлением Date / DateTime), так и отметкой времени Unix. Более длинные числовые строки разрешены.

Синтаксис

toDateTime(expr[, time_zone])

Аргументы

Возвращаемое значение

Возвращает дату и время. DateTime

Примеры

Пример использования

SELECT toDateTime('2025-01-01 00:00:00'), toDateTime(1735689600, 'UTC')
FORMAT Vertical
Row 1:
──────
toDateTime('2025-01-01 00:00:00'): 2025-01-01 00:00:00
toDateTime(1735689600, 'UTC'):     2025-01-01 00:00:00

toDateTime32

Введена в: v20.9

Преобразует входное значение в тип DateTime. Поддерживает преобразование из String, FixedString, Date, Date32, DateTime или числовых типов ((U)Int*, Float*, Decimal). DateTime32 обеспечивает расширенный диапазон по сравнению с DateTime, поддерживая даты от 1900-01-01 до 2299-12-31.

Синтаксис

toDateTime32(x[, timezone])

Аргументы

  • x — Входное значение, которое требуется преобразовать. String или FixedString или UInt* или Float* или Date или DateTime или DateTime64
  • timezone — Необязательный параметр. Часовой пояс для возвращаемого значения DateTime. String

Возвращаемое значение

Возвращает преобразованное значение. DateTime

Примеры

Значение находится в допустимом диапазоне

SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('20255-01-01 00:00:00.000', 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                                          │
└─────────────────────────┴────────────────────────────────────────────────────────┘

Как десятичное число с заданной точностью

SELECT toDateTime64(1735689600.000, 3) AS value, toTypeName(value);
-- without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1735689600.000, 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                            │
└─────────────────────────┴──────────────────────────────────────────┘
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800000, 3))─┐
│ 2282-12-31 00:00:00.000 │ DateTime64(3)                              │
└─────────────────────────┴────────────────────────────────────────────┘

С указанием часового пояса

SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul'))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul')                                      │
└─────────────────────────┴─────────────────────────────────────────────────────────────────────┘

toDateTime64

Добавлено в версии: v20.1

Преобразует переданное значение в значение типа DateTime64.

Синтаксис

toDateTime64(expr, scale[, timezone])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • scale — шаг тика (точность): 10^(-scale) секунд. UInt8
  • timezone — необязательный параметр. Часовой пояс для указанного объекта DateTime64. String

Возвращаемое значение

Возвращает календарную дату и время суток с точностью до долей секунды. DateTime64

Примеры

Значение находится в допустимом диапазоне

SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00.000', 3))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3)                                          │
└─────────────────────────┴────────────────────────────────────────────────────────┘

В десятичное число с заданной точностью

SELECT toDateTime64(1546300800.000, 3) AS value, toTypeName(value);
-- Without the decimal point the value is still treated as Unix Timestamp in seconds
SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800000, 3))─┐
│ 2282-12-31 00:00:00.000 │ DateTime64(3)                              │
└─────────────────────────┴────────────────────────────────────────────┘

С часовым поясом

SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul'))─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul')                                      │
└─────────────────────────┴─────────────────────────────────────────────────────────────────────┘

toDateTime64OrDefault

Введена в версии: v21.11

Как и toDateTime64, эта функция преобразует входное значение в значение типа DateTime64, но возвращает либо значение по умолчанию для DateTime64, либо указанное значение по умолчанию, если передан некорректный аргумент.

Синтаксис

toDateTime64OrDefault(expr, scale[, timezone, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • scale — размер тика (точность): 10^-precision секунды. UInt8
  • timezone — необязательный параметр. Часовой пояс. String
  • default — необязательный параметр. Значение по умолчанию, возвращаемое при неудачной попытке разбора. DateTime64

Возвращаемое значение

Значение типа DateTime64 при успешном преобразовании; в противном случае возвращает значение по умолчанию, если оно указано, или 1970-01-01 00:00:00.000, если нет. DateTime64

Примеры

Успешное преобразование

SELECT toDateTime64OrDefault('1976-10-18 00:00:00.30', 3)
1976-10-18 00:00:00.300

Ошибка преобразования

SELECT toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3))
2000-12-31 23:00:00.000

toDateTime64OrNull

Появилась в версии: v20.1

Преобразует входное значение в значение типа DateTime64, но возвращает NULL, если получен некорректный аргумент. Аналогична функции toDateTime64, но возвращает NULL, если получен некорректный аргумент.

Синтаксис

toDateTime64OrNull(x)

Аргументы

  • x — Строковое представление даты и времени с точностью до долей секунды. String

Возвращаемое значение

Возвращает значение типа DateTime64 при успешном преобразовании, иначе — NULL. DateTime64 или NULL

Примеры

Пример использования

SELECT toDateTime64OrNull('2025-12-30 13:44:17.123'), toDateTime64OrNull('invalid')
┌─toDateTime64OrNull('2025-12-30 13:44:17.123')─┬─toDateTime64OrNull('invalid')─┐
│                         2025-12-30 13:44:17.123 │                          ᴺᵁᴸᴸ │
└─────────────────────────────────────────────────┴───────────────────────────────┘

toDateTime64OrZero

Введена в: v20.1

Преобразует входное значение в значение типа DateTime64, но возвращает нижнюю границу диапазона значений DateTime64, если получен некорректный аргумент. Аналогична toDateTime64, но возвращает нижнюю границу диапазона значений DateTime64, если получен некорректный аргумент.

См. также:

Синтаксис

toDateTime64OrZero(x)

Аргументы

  • x — Строковое представление даты со временем и субсекундной точностью. String

Возвращаемое значение

Возвращает значение типа DateTime64 в случае успешного преобразования, в противном случае — нижнюю границу типа DateTime64 (1970-01-01 00:00:00.000). DateTime64

Примеры

Пример использования

SELECT toDateTime64OrZero('2025-12-30 13:44:17.123'), toDateTime64OrZero('invalid')
┌─toDateTime64OrZero('2025-12-30 13:44:17.123')─┬─toDateTime64OrZero('invalid')─┐
│                         2025-12-30 13:44:17.123 │             1970-01-01 00:00:00.000 │
└─────────────────────────────────────────────────┴─────────────────────────────────────┘

toDateTimeOrDefault

Добавлена в: v21.11

Аналогична toDateTime, но при неуспешном преобразовании возвращает значение по умолчанию: либо третий аргумент (если он указан), либо нижнюю границу DateTime.

Синтаксис

toDateTimeOrDefault(expr[, timezone, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • timezone — необязательный аргумент. Часовой пояс. String
  • default — необязательный аргумент. Значение по умолчанию, возвращаемое при неуспешном разборе. DateTime

Возвращаемое значение

Значение типа DateTime при успешном разборе; в противном случае возвращается значение по умолчанию, если оно передано, или 1970-01-01 00:00:00, если нет. DateTime

Примеры

Успешное преобразование

SELECT toDateTimeOrDefault('2022-12-30 13:44:17')
2022-12-30 13:44:17

Ошибка преобразования

SELECT toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))
2023-01-01 00:00:00

toDateTimeOrNull

Добавлена в версии: v1.1

Преобразует входное значение в значение типа DateTime, но возвращает NULL, если получен некорректный аргумент. Аналогична toDateTime, но возвращает NULL, если получен некорректный аргумент.

Синтаксис

toDateTimeOrNull(x)

Аргументы

  • x — строковое представление даты и времени. String

Возвращаемое значение

Возвращает значение типа DateTime в случае успеха, иначе NULL. DateTime или NULL

Примеры

Пример использования

SELECT toDateTimeOrNull('2025-12-30 13:44:17'), toDateTimeOrNull('invalid')
┌─toDateTimeOrNull('2025-12-30 13:44:17')─┬─toDateTimeOrNull('invalid')─┐
│                     2025-12-30 13:44:17 │                        ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴─────────────────────────────┘

toDateTimeOrZero

Появилась в версии: v1.1

Преобразует входное значение к типу DateTime, но возвращает нижнюю границу DateTime, если получен некорректный аргумент. То же, что и toDateTime, но возвращает нижнюю границу DateTime, если получен некорректный аргумент.

Синтаксис

toDateTimeOrZero(x)

Аргументы

  • x — строковое представление даты и времени. String

Возвращаемое значение

Возвращает значение типа DateTime при успешном выполнении, в противном случае — нижнюю границу DateTime (1970-01-01 00:00:00). DateTime

Примеры

Пример использования

SELECT toDateTimeOrZero('2025-12-30 13:44:17'), toDateTimeOrZero('invalid')
┌─toDateTimeOrZero('2025-12-30 13:44:17')─┬─toDateTimeOrZero('invalid')─┐
│                     2025-12-30 13:44:17 │         1970-01-01 00:00:00 │
└─────────────────────────────────────────┴─────────────────────────────┘

toDecimal128

Добавлено в: v18.12

Преобразует входное значение в значение типа Decimal(38, S) с масштабом S. В случае ошибки выбрасывает исключение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы:

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toDecimal128('0xc0fe', 1);.
Примечание

Переполнение может произойти, если значение expr выходит за пределы Decimal128:(-1*10^(38 - S), 1*10^(38 - S)). Избыточные цифры в дробной части отбрасываются (не округляются). Избыточные цифры в целой части приводят к исключению.

Примечание

При преобразованиях лишние цифры отбрасываются, и результат может быть неожиданным при работе со входными значениями Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal128(1.15, 2) равно 1.14, потому что 1.15 * 100 в формате с плавающей запятой равно 114.99. Вы можете использовать входной параметр типа String, чтобы операции выполнялись над базовым целочисленным типом: toDecimal128('1.15', 2) = 1.15

Синтаксис

toDecimal128(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 38, определяющий, сколько цифр может содержать дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение типа Decimal(38, S) Decimal128(S)

Примеры

Пример использования

SELECT
    toDecimal128(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal128(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal128('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(38, 1)
b:      99.67
type_b: Decimal(38, 2)
c:      99.67
type_c: Decimal(38, 3)

toDecimal128OrDefault

Впервые появилась в версии: v21.11

Подобно функции toDecimal128, эта функция преобразует входное значение в значение типа Decimal(38, S), но в случае ошибки возвращает значение по умолчанию.

Синтаксис

toDecimal128OrDefault(expr, S[, default])

Аргументы

  • expr — строковое представление числа. String
  • S — параметр масштаба от 0 до 38, определяющий, сколько цифр может иметь дробная часть числа. UInt8
  • default — необязательный параметр. Значение по умолчанию, которое возвращается, если преобразование к типу Decimal128(S) завершилось неудачно. Decimal128(S)

Возвращаемое значение

Значение типа Decimal(38, S) при успешном преобразовании, в противном случае возвращается значение по умолчанию, если оно задано, или 0, если нет. Decimal128(S)

Примеры

Успешное преобразование

SELECT toDecimal128OrDefault(toString(1/42), 18)
0.023809523809523808

Ошибка преобразования

SELECT toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)'))
-1

toDecimal128OrNull

Введена в версии: v20.1

Преобразует входное значение в значение типа Decimal(38, S), но в случае ошибки возвращает NULL. Аналог toDecimal128, но возвращает NULL вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения или строковые представления типа Float*.

Неподдерживаемые аргументы (возвращают NULL):

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
  • Значения, выходящие за пределы диапазона Decimal128: (-1*10^(38 - S), 1*10^(38 - S)).

См. также:

Синтаксис

toDecimal128OrNull(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 38, задающий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение типа Decimal(38, S) при успешном выполнении, в противном случае — NULL. Decimal128(S) или NULL

Примеры

Пример использования

SELECT toDecimal128OrNull('42.7', 2), toDecimal128OrNull('invalid', 2)
┌─toDecimal128OrNull('42.7', 2)─┬─toDecimal128OrNull('invalid', 2)─┐
│                         42.70 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal128OrZero

Введена в версии: v20.1

Преобразует входное значение в значение типа Decimal(38, S), но возвращает 0 в случае ошибки. Аналог toDecimal128, но возвращает 0 вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения или строковые представления типа Float*.

Неподдерживаемые аргументы (возвращают 0):

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра).
  • Строковые представления двоичных и шестнадцатеричных чисел.
Примечание

Если входное значение выходит за пределы Decimal128:(-1*10^(38 - S), 1*10^(38 - S)), функция возвращает 0.

Синтаксис

toDecimal128OrZero(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба в диапазоне от 0 до 38, определяющий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение типа Decimal(38, S) при успешном выполнении, в противном случае — 0. Decimal128(S)

Примеры

Базовое использование

SELECT toDecimal128OrZero('42.7', 2), toDecimal128OrZero('invalid', 2)
┌─toDecimal128OrZero('42.7', 2)─┬─toDecimal128OrZero('invalid', 2)─┐
│                         42.70 │                             0.00 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256

Введена в: v20.8

Преобразует входное значение в значение типа Decimal(76, S) с масштабом S. В случае ошибки выбрасывает исключение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы:

  • Значения или строковые представления значений типа Float* NaN и Inf (регистронезависимо).
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toDecimal256('0xc0fe', 1);.
Примечание

Переполнение может произойти, если значение expr выходит за пределы Decimal256:(-1*10^(76 - S), 1*10^(76 - S)). Лишние цифры в дробной части отбрасываются (без округления). Лишние цифры в целой части приводят к исключению.

Примечание

При преобразованиях лишние цифры отбрасываются, и поведение может быть неожиданным при работе с входными значениями Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal256(1.15, 2) равно 1.14, потому что 1.15 * 100 в формате с плавающей запятой равно 114.99. Вы можете использовать строковый ввод, чтобы операции выполнялись над целочисленным типом: toDecimal256('1.15', 2) = 1.15

Синтаксис

toDecimal256(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 76, определяющий, сколько цифр может быть в дробной части числа. UInt8

Возвращаемое значение

Возвращает значение типа Decimal(76, S). Decimal256(S)

Примеры

Пример использования

SELECT
    toDecimal256(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal256(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal256('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      99
type_a: Decimal(76, 1)
b:      99.67
type_b: Decimal(76, 2)
c:      99.67
type_c: Decimal(76, 3)

toDecimal256OrDefault

Введена в версии: v21.11

Аналогично функции toDecimal256, эта функция преобразует входное значение в значение типа Decimal(76, S), но в случае ошибки возвращает значение по умолчанию.

Синтаксис

toDecimal256OrDefault(expr, S[, default])

Аргументы

  • expr — строковое представление числа. String
  • S — параметр масштаба от 0 до 76, определяющий, сколько цифр может иметь дробная часть числа. UInt8
  • default — необязательный параметр. Значение по умолчанию, которое возвращается, если преобразование к типу Decimal256(S) не удалось. Decimal256(S)

Возвращаемое значение

Значение типа Decimal(76, S) при успешном преобразовании, в противном случае возвращается значение по умолчанию, если оно задано, или 0, если нет. Decimal256(S)

Примеры

Успешное преобразование

SELECT toDecimal256OrDefault(toString(1/42), 76)
0.023809523809523808

Ошибка преобразования

SELECT toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)'))
-1

toDecimal256OrNull

Введена в версии v20.8

Преобразует входное значение в значение типа Decimal(76, S), но возвращает NULL в случае ошибки. Аналог функции toDecimal256, но возвращает NULL вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы (возвращают NULL):

  • Значения или строковые представления значений Float* NaN и Inf (без учёта регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
  • Значения, выходящие за границы Decimal256: (-1 * 10^(76 - S), 1 * 10^(76 - S)).

См. также:

Синтаксис

toDecimal256OrNull(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числового значения. Expression
  • S — параметр масштаба от 0 до 76, определяющий, сколько цифр может содержать дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(76, S), если операция завершилась успешно, в противном случае возвращает NULL. Decimal256(S) или NULL

Примеры

Пример использования

SELECT toDecimal256OrNull('42.7', 2), toDecimal256OrNull('invalid', 2)
┌─toDecimal256OrNull('42.7', 2)─┬─toDecimal256OrNull('invalid', 2)─┐
│                         42.70 │                             ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal256OrZero

Введена в версии v20.8

Преобразует входное значение к типу Decimal(76, S), но возвращает 0 в случае ошибки. Аналог toDecimal256, но возвращает 0 вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения или строковые представления типа Float*.

Неподдерживаемые аргументы (возвращают 0):

  • Значения или строковые представления значений Float* NaN и Inf (без учёта регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
Примечание

Если входное значение выходит за границы Decimal256:(-1*10^(76 - S), 1*10^(76 - S)), функция возвращает 0.

См. также:

Синтаксис

toDecimal256OrZero(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 76, определяющий, сколько знаков после запятой может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(76, S) в случае успеха, иначе 0. Decimal256(S)

Примеры

Пример использования

SELECT toDecimal256OrZero('42.7', 2), toDecimal256OrZero('invalid', 2)
┌─toDecimal256OrZero('42.7', 2)─┬─toDecimal256OrZero('invalid', 2)─┐
│                         42.70 │                             0.00 │
└───────────────────────────────┴──────────────────────────────────┘

toDecimal32

Введена в: v18.12

Преобразует входное значение в значение типа Decimal(9, S) с масштабом S. В случае ошибки генерирует исключение.

Поддерживаемые аргументы:

  • Значения или строковые представления целочисленных типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы:

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toDecimal32('0xc0fe', 1);.
Примечание

Может произойти переполнение, если значение expr выходит за пределы Decimal32:(-1*10^(9 - S), 1*10^(9 - S)). Лишние цифры в дробной части отбрасываются (не округляются). Лишние цифры в целой части приводят к исключению.

Примечание

При преобразовании лишние цифры отбрасываются, и поведение может оказаться неожиданным при работе со значениями Float32/Float64 на входе, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal32(1.15, 2) равно 1.14, потому что 1.15 * 100 в формате с плавающей запятой равно 114.99. Вы можете использовать строковое значение на входе, чтобы операции выполнялись над целочисленным типом: toDecimal32('1.15', 2) = 1.15

Синтаксис

toDecimal32(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 9, определяющий количество цифр в дробной части числа. UInt8

Возвращаемое значение

Возвращает значение типа Decimal(9, S) Decimal32(S)

Примеры

Пример использования

SELECT
    toDecimal32(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal32(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal32('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2
type_a: Decimal(9, 1)
b:      4.2
type_b: Decimal(9, 2)
c:      4.2
type_c: Decimal(9, 3)

toDecimal32OrDefault

Появилась в версии: v21.11

Аналогично функции toDecimal32, эта функция преобразует входное значение в значение типа Decimal(9, S), но в случае ошибки возвращает значение по умолчанию.

Синтаксис

toDecimal32OrDefault(expr, S[, default])

Аргументы

  • expr — строковое представление числа. String
  • S — параметр масштаба от 0 до 9, определяющий, сколько цифр может иметь дробная часть числа. UInt8
  • default — необязательный аргумент. Значение по умолчанию, которое возвращается, если преобразование к типу Decimal32(S) не удалось. Decimal32(S)

Возвращаемое значение

Значение типа Decimal(9, S) при успешном преобразовании, в противном случае — значение по умолчанию, если оно передано, или 0, если нет. Decimal32(S)

Примеры

Успешное преобразование

SELECT toDecimal32OrDefault(toString(0.0001), 5)
0.0001

Ошибка преобразования

SELECT toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)'))
-1

toDecimal32OrNull

Функция появилась в: v20.1

Преобразует входное значение в значение типа Decimal(9, S), но в случае ошибки возвращает NULL. Аналог функции toDecimal32, но вместо генерации исключения при ошибках преобразования возвращает NULL.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы (возвращается NULL):

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра символов).
  • Строковые представления двоичных и шестнадцатеричных значений.
  • Значения, выходящие за допустимые пределы Decimal32:(-1*10^(9 - S), 1*10^(9 - S)).

См. также:

Синтаксис

toDecimal32OrNull(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 9, задающий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(9, S) при успешном выполнении, в противном случае — NULL. Decimal32(S) или NULL

Примеры

Пример использования

SELECT toDecimal32OrNull('42.7', 2), toDecimal32OrNull('invalid', 2)
┌─toDecimal32OrNull('42.7', 2)─┬─toDecimal32OrNull('invalid', 2)─┐
│                        42.70 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal32OrZero

Появилась в версии v20.1

Преобразует входное значение в значение типа Decimal(9, S), но в случае ошибки возвращает 0. Аналог toDecimal32, но возвращает 0 вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения или строковые представления типа Float*.

Неподдерживаемые аргументы (возвращают 0):

  • Значения или строковые представления значений Float* NaN и Inf (без учета регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
Примечание

Если входное значение выходит за пределы диапазона Decimal32:(-1*10^(9 - S), 1*10^(9 - S)), функция возвращает 0.

Синтаксис

toDecimal32OrZero(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 9, задающий, сколько цифр может содержать дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(9, S) при успешном выполнении, в противном случае — 0. Decimal32(S)

Примеры

Пример использования

SELECT toDecimal32OrZero('42.7', 2), toDecimal32OrZero('invalid', 2)
┌─toDecimal32OrZero('42.7', 2)─┬─toDecimal32OrZero('invalid', 2)─┐
│                        42.70 │                            0.00 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64

Добавлена в версии v18.12

Преобразует входное значение в значение типа Decimal(18, S) с масштабом S. В случае ошибки выбрасывает исключение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы:

  • Значения или строковые представления значений Float* NaN и Inf (регистр не учитывается).
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toDecimal64('0xc0fe', 1);.
Примечание

Может произойти переполнение, если значение expr выходит за пределы Decimal64:(-1*10^(18 - S), 1*10^(18 - S)). Избыточные цифры в дробной части отбрасываются (без округления). Избыточные цифры в целой части приведут к исключению.

Примечание

При преобразованиях лишние цифры отбрасываются, и возможна неожиданная работа со значениями типов Float32/Float64, поскольку операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal64(1.15, 2) равно 1.14, потому что 1.15 * 100 в формате с плавающей запятой даёт 114.99. Вы можете использовать строковый аргумент, чтобы операции выполнялись над целочисленным типом: toDecimal64('1.15', 2) = 1.15

Синтаксис

toDecimal64(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 18, определяющий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает десятичное значение. Decimal(18, S)

Примеры

Пример использования

SELECT
    toDecimal64(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal64(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal64('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical
Row 1:
──────
a:      2.0
type_a: Decimal(18, 1)
b:      4.20
type_b: Decimal(18, 2)
c:      4.200
type_c: Decimal(18, 3)

toDecimal64OrDefault

Добавлена в версии v21.11

Подобно функции toDecimal64, эта функция преобразует входное значение в значение типа Decimal(18, S), но в случае ошибки возвращает значение по умолчанию.

Синтаксис

toDecimal64OrDefault(expr, S[, default])

Аргументы

  • expr — Строковое представление числа. String
  • S — Параметр масштаба от 0 до 18, определяющий количество знаков в дробной части числа. UInt8
  • default — Необязательный параметр. Значение по умолчанию, возвращаемое при неудачном разборе строки в тип Decimal64(S). Decimal64(S)

Возвращаемое значение

Значение типа Decimal(18, S) при успешном преобразовании, в противном случае — значение по умолчанию, если оно передано, или 0, если нет. Decimal64(S)

Примеры

Успешное преобразование

SELECT toDecimal64OrDefault(toString(0.0001), 18)
0.0001

Ошибка преобразования

SELECT toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)'))
-1

toDecimal64OrNull

Введена в версии: v20.1

Преобразует входное значение в значение типа Decimal(18, S), но в случае ошибки возвращает NULL. Аналогична функции toDecimal64, но возвращает NULL вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения или строковые представления типов Float*.

Неподдерживаемые аргументы (возвращают NULL):

  • Значения или строковые представления значений Float* NaN и Inf (без учёта регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
  • Значения, выходящие за пределы Decimal64:(-1*10^(18 - S), 1*10^(18 - S)).

См. также:

Синтаксис

toDecimal64OrNull(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 18, определяющий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(18, S) при успешном выполнении, иначе NULL. Decimal64(S) или NULL

Примеры

Пример использования

SELECT toDecimal64OrNull('42.7', 2), toDecimal64OrNull('invalid', 2)
┌─toDecimal64OrNull('42.7', 2)─┬─toDecimal64OrNull('invalid', 2)─┐
│                        42.70 │                            ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘

toDecimal64OrZero

Добавлена в: v20.1

Преобразует входное значение в значение типа Decimal(18, S), но возвращает 0 в случае ошибки. Аналог toDecimal64, но возвращает 0 вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения или строковые представления типа Float*.

Неподдерживаемые аргументы (возвращают 0):

  • Значения или строковые представления значений Float* NaN и Inf (без учёта регистра).
  • Строковые представления двоичных и шестнадцатеричных значений.
Примечание

Если входное значение выходит за границы Decimal64:(-1*10^(18 - S), 1*10^(18 - S)), функция возвращает 0.

См. также:

Синтаксис

toDecimal64OrZero(expr, S)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression
  • S — параметр масштаба от 0 до 18, определяющий, сколько цифр может иметь дробная часть числа. UInt8

Возвращаемое значение

Возвращает значение Decimal(18, S) при успешном выполнении, иначе — 0. Decimal64(S)

Примеры

Пример использования

SELECT toDecimal64OrZero('42.7', 2), toDecimal64OrZero('invalid', 2)
┌─toDecimal64OrZero('42.7', 2)─┬─toDecimal64OrZero('invalid', 2)─┐
│                        42.70 │                            0.00 │
└──────────────────────────────┴─────────────────────────────────┘

toDecimalString

Введена в версии v23.3

Преобразует числовое значение в String с указанным количеством знаков после запятой.

Функция округляет входное значение до заданного количества знаков после запятой. Если входное значение содержит меньше дробных знаков, чем запрошено, результат дополняется нулями, чтобы получить ровно указанное количество дробных знаков.

Синтаксис

toDecimalString(number, scale)

Аргументы

  • number — Числовое значение, которое нужно преобразовать в строку. Может быть любого числового типа (Int, UInt, Float, Decimal). Int8 или Int16 или Int32 или Int64 или UInt8 или UInt16 или UInt32 или UInt64 или Float32 или Float64 или Decimal
  • scale — Количество знаков после запятой. При необходимости результат будет округлён. UInt8

Возвращаемое значение

Возвращает строковое представление числа с ровно указанным количеством знаков после запятой. String

Примеры

Округление и форматирование числа

SELECT toDecimalString(2.1456, 2)
┌─toDecimalString(2.1456, 2)─┐
│ 2.15                       │
└────────────────────────────┘

Заполнение нулями

SELECT toDecimalString(5, 3)
┌─toDecimalString(5, 3)─┐
│ 5.000                 │
└───────────────────────┘

Различные числовые типы

SELECT toDecimalString(CAST(123.456 AS Decimal(10,3)), 2) AS decimal_val,
       toDecimalString(CAST(42.7 AS Float32), 4) AS float_val
┌─decimal_val─┬─float_val─┐
│ 123.46      │ 42.7000   │
└─────────────┴───────────┘

toFixedString

Добавлено в версию v1.1

Преобразует аргумент типа String в тип FixedString(N) (строка фиксированной длины N).

Если строка содержит меньше байт, чем N, она дополняется нулевыми байтами справа. Если строка содержит больше байт, чем N, выбрасывается исключение.

Синтаксис

toFixedString(s, N)

Аргументы

  • s — строка, которую нужно преобразовать. String
  • N — длина результирующего FixedString. const UInt*

Возвращаемое значение

Возвращает FixedString длиной N. FixedString(N)

Примеры

Пример использования

SELECT toFixedString('foo', 8) AS s;
┌─s─────────────┐
│ foo\0\0\0\0\0 │
└───────────────┘

toFloat32

Появилась в версии: v1.1

Преобразует входное значение в значение типа Float32. Генерирует исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения типа (U)Int*.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типа Float*, включая NaN и Inf.
  • Строковые представления Float*, включая NaN и Inf (без учета регистра).

Неподдерживаемые аргументы:

  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toFloat32('0xc0fe');.

См. также:

Синтаксис

toFloat32(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 32-битное число с плавающей запятой. Float32

Примеры

Пример использования

SELECT
    toFloat32(42.7),
    toFloat32('42.7'),
    toFloat32('NaN')
FORMAT Vertical
Row 1:
──────
toFloat32(42.7):   42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'):  nan

toFloat32OrDefault

Добавлена в версии: v21.11

Подобно функции toFloat32, эта функция преобразует входное значение в значение типа Float32, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toFloat32OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, которое возвращается, если разбор не удался. Float32

Возвращаемое значение

Возвращает значение типа Float32 при успешном разборе, в противном случае — значение по умолчанию, если оно передано, или 0, если не передано.

Примеры

Успешное преобразование

SELECT toFloat32OrDefault('8', CAST('0', 'Float32'))
8

Ошибка преобразования

SELECT toFloat32OrDefault('abc', CAST('0', 'Float32'))
0

toFloat32OrNull

Введена в версии v1.1

Преобразует входное значение в значение типа Float32, но в случае ошибки возвращает NULL. Аналог toFloat32, но возвращает NULL вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения типов (U)Int*.
  • Строковые представления типов (U)Int8/16/32/128/256.
  • Значения типов Float*, включая NaN и Inf.
  • Строковые представления типов Float*, включая NaN и Inf (без учета регистра).

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toFloat32OrNull('0xc0fe');.
  • Неверные строковые форматы.

См. также:

Синтаксис

toFloat32OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 32-битное значение с плавающей запятой при успешном выполнении, иначе NULL. Float32 или NULL

Примеры

Пример использования

SELECT
    toFloat32OrNull('42.7'),
    toFloat32OrNull('NaN'),
    toFloat32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('NaN'):  nan
toFloat32OrNull('abc'):  \N

toFloat32OrZero

Добавлена в версии: v1.1

Преобразует входное значение в значение типа Float32, но возвращает 0 в случае ошибки. Аналог функции toFloat32, но возвращает 0 вместо генерации исключения при ошибках преобразования.

См. также:

Синтаксис

toFloat32OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 32-битное число с плавающей запятой, иначе — 0. Float32

Примеры

Пример использования

SELECT
    toFloat32OrZero('42.7'),
    toFloat32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'):  0

toFloat64

Введена в версии v1.1

Преобразует входное значение в значение типа Float64. Выбрасывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения типов (U)Int*.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float*, включая NaN и Inf.
  • Строковые представления типов Float*, включая NaN и Inf (регистр не имеет значения).

Неподдерживаемые аргументы:

  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toFloat64('0xc0fe');.

См. также:

Синтаксис

toFloat64(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 64-битное число с плавающей запятой. Float64

Примеры

Пример использования

SELECT
    toFloat64(42.7),
    toFloat64('42.7'),
    toFloat64('NaN')
FORMAT Vertical
Row 1:
──────
toFloat64(42.7):   42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'):  nan

toFloat64OrDefault

Добавлено в: v21.11

Аналогично toFloat64, эта функция преобразует входное значение в значение типа Float64, но в случае ошибки возвращает значение по умолчанию. Если значение параметра default не передано, то в случае ошибки возвращается 0.

Синтаксис

toFloat64OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, возвращаемое при неудачном разборе. Float64

Возвращаемое значение

Возвращает значение типа Float64 при успешном разборе, в противном случае возвращает значение по умолчанию, если оно передано, или 0, если не передано. Float64

Примеры

Успешное преобразование

SELECT toFloat64OrDefault('8', CAST('0', 'Float64'))
8

Ошибка преобразования

SELECT toFloat64OrDefault('abc', CAST('0', 'Float64'))
0

toFloat64OrNull

Введена в версии: v1.1

Преобразует входное значение к типу Float64, но возвращает NULL в случае ошибки. Аналог toFloat64, но возвращает NULL вместо выбрасывания исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Значения типа (U)Int*.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типа Float*, включая NaN и Inf.
  • Строковые представления значений типа Float*, включая NaN и Inf (без учета регистра).

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toFloat64OrNull('0xc0fe');.
  • Неверные строковые форматы.

См. также:

Синтаксис

toFloat64OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 64-битное значение с плавающей запятой при успешном выполнении, в противном случае — NULL. Float64 или NULL

Примеры

Пример использования

SELECT
    toFloat64OrNull('42.7'),
    toFloat64OrNull('NaN'),
    toFloat64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('NaN'):  nan
toFloat64OrNull('abc'):  \N

toFloat64OrZero

Добавлена в версии v1.1

Преобразует входное значение к типу Float64, но при ошибке возвращает 0. Аналог функции toFloat64, но возвращает 0 вместо генерации исключения при ошибках преобразования.

См. также:

Синтаксис

toFloat64OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает 64-битовое число с плавающей запятой при успешном выполнении, в противном случае 0. Float64

Примеры

Пример использования

SELECT
    toFloat64OrZero('42.7'),
    toFloat64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'):  0

toInt128

Введена в версии: v1.1

Преобразует входное значение в значение типа Int128. Генерирует исключение в случае ошибки. Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt128('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int128, результат переполняется или выходит за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toInt128(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 128-битное целое число. Int128

Примеры

Пример использования

SELECT
    toInt128(-128),
    toInt128(-128.8),
    toInt128('-128')
FORMAT Vertical
Row 1:
──────
toInt128(-128):   -128
toInt128(-128.8): -128
toInt128('-128'): -128

toInt128OrDefault

Введена в версии: v21.11

Подобно функции toInt128, эта функция преобразует входное значение в значение типа Int128, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, в случае ошибки возвращается 0.

Синтаксис

toInt128OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, возвращаемое при неудачном разборе. Int128

Возвращаемое значение

Возвращает значение типа Int128 при успешном разборе; в противном случае возвращает значение по умолчанию, если оно было передано, или 0, если нет. Int128

Примеры

Успешное преобразование

SELECT toInt128OrDefault('-128', CAST('-1', 'Int128'))
-128

Ошибка преобразования

SELECT toInt128OrDefault('abc', CAST('-1', 'Int128'))
-1

toInt128OrNull

Добавлено в v20.8

Как и toInt128, эта функция преобразует входное значение в значение типа Int128, но в случае ошибки возвращает NULL.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt128OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int128, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toInt128OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int128, иначе NULL, если преобразование не удалось. Int128 или NULL

Примеры

Пример использования

SELECT
    toInt128OrNull('-128'),
    toInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'):  \N

toInt128OrZero

Представлена в: v20.8

Преобразует входное значение к типу Int128, но возвращает 0 в случае ошибки. Аналог toInt128, но возвращает 0 вместо выброса исключения.

См. также:

Синтаксис

toInt128OrZero(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное входное значение, в противном случае — 0, если преобразование не удалось. Int128

Примеры

Пример использования

SELECT toInt128OrZero('123')
123

При ошибке преобразования возвращается ноль

SELECT toInt128OrZero('abc')
0

toInt16

Введена в версии: v1.1

Преобразует входное значение в значение типа Int16. Вызывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt16('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int16, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой. Например: SELECT toInt16(32768) == -32768;.

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

См. также:

Синтаксис

toInt16(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 16-битное целое число. Int16

Примеры

Пример использования

SELECT
    toInt16(-16),
    toInt16(-16.16),
    toInt16('-16')
FORMAT Vertical
Row 1:
──────
toInt16(-16):    -16
toInt16(-16.16): -16
toInt16('-16'):  -16

toInt16OrDefault

Добавлена в: v21.11

Как и функция toInt16, эта функция преобразует входное значение в значение типа Int16, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt16OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, которое возвращается при неудачной попытке преобразования. Int16

Возвращаемое значение

Возвращает значение типа Int16 при успешном преобразовании, в противном случае возвращает значение по умолчанию, если оно передано, или 0, если нет. Int16

Примеры

Успешное преобразование

SELECT toInt16OrDefault('-16', CAST('-1', 'Int16'))
-16

Неудачное преобразование

SELECT toInt16OrDefault('abc', CAST('-1', 'Int16'))
-1

toInt16OrNull

Введена в версии: v1.1

Подобно функции toInt16, эта функция преобразует входное значение в значение типа Int16, но в случае ошибки возвращает NULL.

Поддерживаемые аргументы:

  • Строковые представления значений типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt16OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int16, происходит переполнение или выход результата за нижнюю границу (underflow). Это не считается ошибкой.

См. также:

Синтаксис

toInt16OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int16, в противном случае — NULL, если преобразование не удалось. Int16 или NULL

Примеры

Пример использования

SELECT
    toInt16OrNull('-16'),
    toInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): \N

toInt16OrZero

Впервые представлена в: v1.1

Как и toInt16, эта функция преобразует входное значение в значение типа Int16, но в случае ошибки возвращает 0.

Поддерживаемые аргументы:

  • Строковые представления целых типов (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt16OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int16, происходит переполнение или потеря значимости результата. Это не считается ошибкой.

См. также:

Синтаксис

toInt16OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int16, а в случае неуспешного преобразования — 0. Int16

Примеры

Пример использования

SELECT
    toInt16OrZero('16'),
    toInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt16OrZero('16'): 16
toInt16OrZero('abc'): 0

toInt256

Введена в версии: v1.1

Преобразует входное значение в значение типа Int256. Вызывает исключение в случае ошибки. Функция использует округление к нулю, то есть отбрасывает дробную часть числа.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt256('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int256, происходит переполнение результата сверху или снизу. Это не считается ошибкой.

См. также:

Синтаксис

toInt256(expr)

Аргументы

  • expr — выражение, результатом которого является число или строковое представление числа. Expression

Возвращаемое значение

Возвращает целое число с разрядностью 256 бит. Int256

Примеры

Пример использования

SELECT
    toInt256(-256),
    toInt256(-256.256),
    toInt256('-256')
FORMAT Vertical
Row 1:
──────
toInt256(-256):     -256
toInt256(-256.256): -256
toInt256('-256'):   -256

toInt256OrDefault

Введена в версии v21.11

Аналогично toInt256, эта функция преобразует входное значение в значение типа Int256, но возвращает значение по умолчанию в случае ошибки. Если параметр default не указан, то в случае ошибки возвращается 0.

Синтаксис

toInt256OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, возвращаемое в случае неуспешного парсинга. Int256

Возвращаемое значение

Возвращает значение типа Int256 в случае успешного преобразования; в противном случае возвращает значение по умолчанию, если оно задано, или 0, если нет. Int256

Примеры

Успешное преобразование

SELECT toInt256OrDefault('-256', CAST('-1', 'Int256'))
-256

Ошибка преобразования

SELECT toInt256OrDefault('abc', CAST('-1', 'Int256'))
-1

toInt256OrNull

Добавлена в: v20.8

Как и toInt256, эта функция преобразует входное значение в значение типа Int256, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления целочисленных типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt256OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int256, происходит переполнение или выход результата за пределы допустимого диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toInt256OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int256, в противном случае NULL, если преобразование не удалось. Int256 или NULL

Примеры

Пример использования

SELECT
    toInt256OrNull('-256'),
    toInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'):  \N

toInt256OrZero

Добавлена в: v20.8

Преобразует входное значение к типу Int256, но возвращает 0 в случае ошибки. Аналог функции toInt256, но возвращает 0 вместо выброса исключения.

См. также:

Синтаксис

toInt256OrZero(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное входное значение, в противном случае 0, если преобразование невозможно. Int256

Примеры

Пример использования

SELECT toInt256OrZero('123')
123

При ошибке преобразования возвращается ноль

SELECT toInt256OrZero('abc')
0

toInt32

Появилась в версии: v1.1

Преобразует входное значение в значение типа Int32. Выбрасывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt32('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона типа Int32, происходит переполнение или выход за нижнюю границу диапазона. Это не считается ошибкой. Например: SELECT toInt32(2147483648) == -2147483648;

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

См. также:

Синтаксис

toInt32(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 32-битное целочисленное значение. Int32

Примеры

Пример использования

SELECT
    toInt32(-32),
    toInt32(-32.32),
    toInt32('-32')
FORMAT Vertical
Row 1:
──────
toInt32(-32):    -32
toInt32(-32.32): -32
toInt32('-32'):  -32

toInt32OrDefault

Введена в: v21.11

Подобно toInt32, эта функция преобразует входное значение в значение типа Int32, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, в случае ошибки возвращается 0.

Синтаксис

toInt32OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, возвращаемое при неудачном преобразовании. Int32

Возвращаемое значение

Возвращает значение типа Int32 при успешном преобразовании, иначе — значение по умолчанию, если оно задано, или 0, если нет. Int32

Примеры

Успешное преобразование

SELECT toInt32OrDefault('-32', CAST('-1', 'Int32'))
-32

Ошибка преобразования

SELECT toInt32OrDefault('abc', CAST('-1', 'Int32'))
-1

toInt32OrNull

Добавлено в: v1.1

Аналогично функции toInt32, эта функция преобразует входное значение в значение типа Int32, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt32OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int32, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toInt32OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int32, в противном случае NULL, если преобразование не удалось. Int32 или NULL

Примеры

Пример использования

SELECT
    toInt32OrNull('-32'),
    toInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): \N

toInt32OrZero

Введена в версии: v1.1

Подобно функции toInt32, эта функция преобразует входное значение в значение типа Int32, но в случае ошибки возвращает 0.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt32OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах типа Int32, происходит переполнение или потеря значимости результата. Это не считается ошибкой.

См. также:

Синтаксис

toInt32OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int32 или 0 в случае неуспешного преобразования. Int32

Примеры

Пример использования

SELECT
    toInt32OrZero('32'),
    toInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt32OrZero('32'): 32
toInt32OrZero('abc'): 0

toInt64

Добавлена в: v1.1

Преобразует входное значение в значение типа Int64. Выбрасывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типов Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt64('0xc0fe');.
Примечание

Если входное значение не может быть представлено в диапазоне Int64, происходит переполнение или выход за нижнюю границу. Это не считается ошибкой. Например: SELECT toInt64(9223372036854775808) == -9223372036854775808;

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

См. также:

Синтаксис

toInt64(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Поддерживаются: значения или строковые представления типа (U)Int*, значения типа Float*. Не поддерживаются: строковые представления значений типа Float* (включая NaN и Inf), строковые представления двоичных и шестнадцатеричных чисел. Expression

Возвращаемое значение

Возвращает 64-битное целое число. Int64

Примеры

Пример использования

SELECT
    toInt64(-64),
    toInt64(-64.64),
    toInt64('-64')
FORMAT Vertical
Row 1:
──────
toInt64(-64):    -64
toInt64(-64.64): -64
toInt64('-64'):  -64

toInt64OrDefault

Введена в: v21.11

Аналогично функции toInt64, эта функция преобразует входное значение в значение типа Int64, но в случае ошибки возвращает значение по умолчанию. Если параметр default не задан, то в случае ошибки возвращается 0.

Синтаксис

toInt64OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, которое возвращается при неуспешном разборе. Int64

Возвращаемое значение

Возвращает значение типа Int64 при успешном преобразовании, иначе возвращает значение по умолчанию, если оно задано, или 0, если нет. Int64

Примеры

Успешное преобразование

SELECT toInt64OrDefault('-64', CAST('-1', 'Int64'))
-64

Ошибка преобразования

SELECT toInt64OrDefault('abc', CAST('-1', 'Int64'))
-1

toInt64OrNull

Введена в версии: v1.1

Подобно функции toInt64, эта функция преобразует входное значение в значение типа Int64, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt64OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int64, происходит переполнение или потеря значимости (underflow) результата. Это не считается ошибкой.

См. также:

Синтаксис

toInt64OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int64 или NULL, если преобразование не удалось. Int64 или NULL

Примеры

Пример использования

SELECT
    toInt64OrNull('-64'),
    toInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): \N

toInt64OrZero

Добавлена в версии: v1.1

Преобразует входное значение в тип Int64, но в случае ошибки возвращает 0. Аналог toInt64, но возвращает 0 вместо выбрасывания исключения.

См. также:

Синтаксис

toInt64OrZero(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное входное значение, либо 0, если преобразование не удалось. Int64

Примеры

Пример использования

SELECT toInt64OrZero('123')
123

При неуспешном преобразовании возвращается ноль

SELECT toInt64OrZero('abc')
0

toInt8

Появилась в версии: v1.1

Преобразует входное значение в значение типа Int8. Выбрасывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt8('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int8, происходит переполнение или понижение (underflow) результата. Это не считается ошибкой. Например: SELECT toInt8(128) == -128;.

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

См. также:

Синтаксис

toInt8(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает значение 8-битного целого числа. Int8

Примеры

Пример использования

SELECT
    toInt8(-8),
    toInt8(-8.8),
    toInt8('-8')
FORMAT Vertical
Row 1:
──────
toInt8(-8):   -8
toInt8(-8.8): -8
toInt8('-8'): -8

toInt8OrDefault

Добавлена в версии: v21.11

Подобно функции toInt8, эта функция преобразует входное значение в значение типа Int8, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt8OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, возвращаемое при неудачном разборе. Int8

Возвращаемое значение

Возвращает значение типа Int8 при успешном преобразовании, в противном случае — значение по умолчанию, если оно задано, или 0, если нет. Int8

Примеры

Успешное преобразование

SELECT toInt8OrDefault('-8', CAST('-1', 'Int8'))
-8

Ошибка преобразования

SELECT toInt8OrDefault('abc', CAST('-1', 'Int8'))
-1

toInt8OrNull

Добавлено в: v1.1

Подобно функции toInt8, эта функция преобразует входное значение в значение типа Int8, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toInt8OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int8, происходит переполнение или выход за нижнюю границу диапазона результата. Это не считается ошибкой.

См. также:

Синтаксис

toInt8OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int8, а при неудачном преобразовании — NULL. Int8 или NULL

Примеры

Пример использования

SELECT
    toInt8OrNull('-8'),
    toInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrNull('-8'):  -8
toInt8OrNull('abc'): \N

toInt8OrZero

Введена в: v1.1

Аналогично toInt8, эта функция преобразует входное значение в значение типа Int8, но в случае ошибки возвращает 0.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt8OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона Int8, происходит переполнение или выход результата за допустимые границы. Это не считается ошибкой.

См. также:

Синтаксис

toInt8OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа Int8, в противном случае — 0, если преобразование не удалось. Int8

Примеры

Пример использования

SELECT
    toInt8OrZero('8'),
    toInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toInt8OrZero('8'): 8
toInt8OrZero('abc'): 0

toInterval

Введена в: v25.4

Создаёт значение типа Interval из числового значения и строки с единицей измерения.

Эта функция предоставляет унифицированный способ создания интервалов разных типов (секунды, минуты, часы, дни, недели, месяцы, кварталы, годы) в рамках одной функции за счёт указания единицы измерения в виде строкового аргумента. Строка с единицей измерения нечувствительна к регистру.

Это эквивалентно вызову специализированных функций, таких как toIntervalSecond, toIntervalMinute, toIntervalDay и т. д., но позволяет указывать единицу измерения динамически в виде строкового параметра.

Синтаксис

toInterval(value, unit)

Аргументы

  • value — числовое значение, задающее количество единиц. Может иметь любой числовой тип: Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Float32 или Float64.
  • unit — единица времени. Должна быть строкой-константой. Допустимые значения: 'nanosecond', 'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'. String

Возвращаемое значение

Возвращает значение типа Interval. Конкретный тип результата зависит от единицы: IntervalNanosecond, IntervalMicrosecond, IntervalMillisecond, IntervalSecond, IntervalMinute, IntervalHour, IntervalDay, IntervalWeek, IntervalMonth, IntervalQuarter или IntervalYear. Interval

Примеры

Создание интервалов с различными единицами времени

SELECT
    toInterval(5, 'second') AS seconds,
    toInterval(3, 'day') AS days,
    toInterval(2, 'month') AS months
┌─seconds─┬─days─┬─months─┐
│ 5       │ 3    │ 2      │
└─────────┴──────┴────────┘

Использование интервалов в арифметике дат

SELECT
    now() AS current_time,
    now() + toInterval(1, 'hour') AS one_hour_later,
    now() - toInterval(7, 'day') AS week_ago
┌─────────current_time─┬──one_hour_later─────┬────────────week_ago─┐
│ 2025-01-04 10:30:00  │ 2025-01-04 11:30:00 │ 2024-12-28 10:30:00 │
└──────────────────────┴─────────────────────┴─────────────────────┘

Динамическое создание интервала

SELECT toDate('2025-01-01') + toInterval(number, 'day') AS dates
FROM numbers(5)
┌──────dates─┐
│ 2025-01-01 │
│ 2025-01-02 │
│ 2025-01-03 │
│ 2025-01-04 │
│ 2025-01-05 │
└────────────┘

toIntervalDay

Добавлена в версии: v1.1

Возвращает интервал длиной n дней типа данных IntervalDay.

Синтаксис

toIntervalDay(n)

Аргументы

  • n — количество дней. Целые числа или их строковые представления, а также числа с плавающей запятой. (U)Int* или Float* или String

Возвращаемое значение

Возвращает интервал длительностью n дней. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalDay(5) AS interval_to_days
SELECT date + interval_to_days AS result
┌─────result─┐
│ 2025-06-20 │
└────────────┘

toIntervalHour

Введена в версии: v1.1

Возвращает интервал продолжительностью n часов типа данных IntervalHour.

Синтаксис

toIntervalHour(n)

Аргументы

  • n — количество часов. Целые числа или их строковые представления, а также числа с плавающей точкой. Int* или UInt* или Float* или String

Возвращаемое значение

Возвращает интервал продолжительностью n часов. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalHour(12) AS interval_to_hours
SELECT date + interval_to_hours AS result
┌──────────────result─┐
│ 2025-06-15 12:00:00 │
└─────────────────────┘

toIntervalMicrosecond

Появилась в версии: v22.6

Возвращает интервал продолжительностью n микросекунд типа данных IntervalMicrosecond.

Синтаксис

toIntervalMicrosecond(n)

Аргументы

Возвращаемое значение

Возвращает интервал в n микросекунд. Interval

Примеры

Пример использования

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMicrosecond(30) AS interval_to_microseconds
SELECT date + interval_to_microseconds AS result
┌─────────────────────result─┐
│ 2025-06-15 00:00:00.000030 │
└────────────────────────────┘

toIntervalMillisecond

Введена в: v22.6

Возвращает интервал n миллисекунд типа данных IntervalMillisecond.

Синтаксис

toIntervalMillisecond(n)

Аргументы

Возвращаемое значение

Возвращает интервал величиной n миллисекунд. Interval

Примеры

Пример использования

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalMillisecond(30) AS interval_to_milliseconds
SELECT date + interval_to_milliseconds AS result
┌──────────────────result─┐
│ 2025-06-15 00:00:00.030 │
└─────────────────────────┘

toIntervalMinute

Функция впервые появилась в: v1.1

Возвращает интервал продолжительностью n минут типа данных IntervalMinute.

Синтаксис

toIntervalMinute(n)

Аргументы

  • n — количество минут. Целые числа или их строковые представления, а также числа с плавающей запятой. (U)Int* или Float* или String

Возвращаемое значение

Возвращает интервал длительностью n минут. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalMinute(12) AS interval_to_minutes
SELECT date + interval_to_minutes AS result
┌──────────────result─┐
│ 2025-06-15 00:12:00 │
└─────────────────────┘

toIntervalMonth

Введена в версии: v1.1

Возвращает интервал длиной n месяцев типа данных IntervalMonth.

Синтаксис

toIntervalMonth(n)

Аргументы

Возвращаемое значение

Возвращает интервал продолжительностью n месяцев. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalMonth(1) AS interval_to_month
SELECT date + interval_to_month AS result
┌─────result─┐
│ 2025-07-15 │
└────────────┘

toIntervalNanosecond

Появилась в версии: v22.6

Возвращает интервал в n наносекунд типа данных IntervalNanosecond.

Синтаксис

toIntervalNanosecond(n)

Аргументы

Возвращаемое значение

Возвращает интервал продолжительностью n наносекунд. Interval

Примеры

Пример использования

WITH
    toDateTime('2025-06-15') AS date,
    toIntervalNanosecond(30) AS interval_to_nanoseconds
SELECT date + interval_to_nanoseconds AS result
┌────────────────────────result─┐
│ 2025-06-15 00:00:00.000000030 │
└───────────────────────────────┘

toIntervalQuarter

Появилось в версии: v1.1

Возвращает интервал длиной n кварталов типа данных IntervalQuarter.

Синтаксис

toIntervalQuarter(n)

Аргументы

Возвращаемое значение

Возвращает интервал на n кварталов. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalQuarter(1) AS interval_to_quarter
SELECT date + interval_to_quarter AS result
┌─────result─┐
│ 2025-09-15 │
└────────────┘

toIntervalSecond

Введена в версии: v1.1

Возвращает интервал продолжительностью n секунд типа данных IntervalSecond.

Синтаксис

toIntervalSecond(n)

Аргументы

  • n — количество секунд. Целые числа или их строковые представления, а также числа с плавающей запятой. (U)Int* или Float* или String

Возвращаемое значение

Возвращает интервал длительностью n секунд. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalSecond(30) AS interval_to_seconds
SELECT date + interval_to_seconds AS result
┌──────────────result─┐
│ 2025-06-15 00:00:30 │
└─────────────────────┘

toIntervalWeek

Добавлено в: v1.1

Возвращает интервал длительностью n недель типа данных IntervalWeek.

Синтаксис

toIntervalWeek(n)

Аргументы

Возвращаемое значение

Возвращает интервал продолжительностью n недель. Interval

Примеры

Пример использования

WITH
    toDate('2025-06-15') AS date,
    toIntervalWeek(1) AS interval_to_week
SELECT date + interval_to_week AS result
┌─────result─┐
│ 2025-06-22 │
└────────────┘

toIntervalYear

Появилась в версии: v1.1

Возвращает интервал длительностью n лет типа данных IntervalYear.

Синтаксис

toIntervalYear(n)

Аргументы

Возвращаемое значение

Возвращает интервал длительностью n лет. Interval

Примеры

Пример использования

WITH
    toDate('2024-06-15') AS date,
    toIntervalYear(1) AS interval_to_year
SELECT date + interval_to_year AS result
┌─────result─┐
│ 2025-06-15 │
└────────────┘

toLowCardinality

Введена в: v18.12

Преобразует входной аргумент в вариант типа данных LowCardinality с тем же типом данных.

Совет

Чтобы преобразовать тип данных LowCardinality в обычный тип данных, используйте функцию CAST. Например: CAST(x AS String).

Синтаксис

toLowCardinality(expr)

Аргументы

Возвращаемое значение

Возвращает исходное значение, преобразованное к типу данных LowCardinality. LowCardinality

Примеры

Пример использования

SELECT toLowCardinality('1')
┌─toLowCardinality('1')─┐
│ 1                     │
└───────────────────────┘

toString

Добавлено в: v1.1

Преобразует значения в их строковое представление. Для аргументов типа DateTime функция может принимать второй аргумент типа String, содержащий имя часового пояса.

Синтаксис

toString(value[, timezone])

Аргументы

  • value — Значение, которое нужно преобразовать в строку. Any
  • timezone — Необязательный аргумент. Название часового пояса для преобразования DateTime. String

Возвращаемое значение

Возвращает строковое представление входного значения. String

Примеры

Пример использования

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10
┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

toStringCutToZero

Добавлено в: v1.1

Принимает аргумент типа String или FixedString и возвращает строку типа String, содержащую копию исходной строки, обрезанную при первом нулевом байте.

Нулевые байты (\0) считаются терминаторами строки. Эта функция полезна для обработки строк в стиле C или бинарных данных, где нулевые байты обозначают конец значимого содержимого.

Синтаксис

toStringCutToZero(s)

Аргументы

  • s — обрабатываемое значение типа String или FixedString. String или FixedString

Возвращаемое значение

Возвращает строку типа String, содержащую символы до первого нулевого байта. String

Примеры

Пример использования

SELECT
    toStringCutToZero('hello'),
    toStringCutToZero('hello\0world')
┌─toStringCutToZero('hello')─┬─toStringCutToZero('hello\\0world')─┐
│ hello                      │ hello                             │
└────────────────────────────┴───────────────────────────────────┘

toTime

Добавлено в версии: v1.1

Преобразует входное значение в тип Time. Поддерживает преобразование из типов String, FixedString, DateTime или числовых типов, представляющих количество секунд с полуночи.

Синтаксис

toTime(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное значение. Time

Примеры

Преобразование String в Time

SELECT toTime('14:30:25')
14:30:25

Преобразование из DateTime в Time

SELECT toTime(toDateTime('2025-04-15 14:30:25'))
14:30:25

Преобразование целого числа в значение времени

SELECT toTime(52225)
14:30:25

toTime64

Добавлена в версии: v25.6

Преобразует входное значение в тип Time64. Поддерживает преобразование из типов String, FixedString, DateTime64 или числовых типов, представляющих количество микросекунд с полуночи. Обеспечивает микросекундную точность значений времени.

Синтаксис

toTime64(x)

Аргументы

Возвращаемое значение

Возвращает преобразованное входное значение с точностью до микросекунд. Time64(6)

Примеры

Преобразование String в Time64

SELECT toTime64('14:30:25.123456')
14:30:25.123456

Преобразование из DateTime64 в Time64

SELECT toTime64(toDateTime64('2025-04-15 14:30:25.123456', 6))
14:30:25.123456

Преобразование целых чисел в Time64

SELECT toTime64(52225123456)
14:30:25.123456

toTime64OrNull

Появилось в версии: v25.6

Преобразует входное значение в значение типа Time64, но при ошибке возвращает NULL. Аналог функции toTime64, но возвращает NULL вместо выброса исключения при ошибках преобразования.

См. также:

Синтаксис

toTime64OrNull(x)

Аргументы

  • x — Строковое представление времени с точностью до долей секунды. String

Возвращаемое значение

Возвращает значение типа Time64 при успешном преобразовании, в противном случае — NULL. Time64 или NULL

Примеры

Пример использования

SELECT toTime64OrNull('12:30:45.123'), toTime64OrNull('invalid')
┌─toTime64OrNull('12:30:45.123')─┬─toTime64OrNull('invalid')─┐
│                   12:30:45.123 │                      ᴺᵁᴸᴸ │
└────────────────────────────────┴───────────────────────────┘

toTime64OrZero

Введено в: v25.6

Преобразует входное значение в значение типа Time64, но возвращает 00:00:00.000 в случае ошибки. Аналог функции toTime64, но возвращает 00:00:00.000 вместо генерации исключения при ошибках преобразования.

Синтаксис

toTime64OrZero(x)

Аргументы

  • x — Строковое представление времени с точностью до долей секунды. String

Возвращаемое значение

Возвращает значение типа Time64 при успешном выполнении, в противном случае — 00:00:00.000. Time64

Примеры

Пример использования

SELECT toTime64OrZero('12:30:45.123'), toTime64OrZero('invalid')
┌─toTime64OrZero('12:30:45.123')─┬─toTime64OrZero('invalid')─┐
│                   12:30:45.123 │             00:00:00.000 │
└────────────────────────────────┴──────────────────────────┘

toTimeOrNull

Введена в версии v1.1

Преобразует входное значение в значение типа Time, но в случае ошибки возвращает NULL. Аналог функции toTime, но возвращает NULL вместо выбрасывания исключения при ошибке преобразования.

См. также:

Синтаксис

toTimeOrNull(x)

Аргументы

  • x — строковое представление времени. String

Возвращаемое значение

Возвращает значение типа Time при успешном преобразовании, в противном случае — NULL.

Примеры

Пример использования

SELECT toTimeOrNull('12:30:45'), toTimeOrNull('invalid')
┌─toTimeOrNull('12:30:45')─┬─toTimeOrNull('invalid')─┐
│                 12:30:45 │                    ᴺᵁᴸᴸ │
└──────────────────────────┴─────────────────────────┘

toTimeOrZero

Добавлена в: v1.1

Преобразует входное значение в тип Time, но в случае ошибки возвращает 00:00:00. Аналогична функции toTime, но вместо генерации исключения при ошибках преобразования возвращает 00:00:00.

Синтаксис

toTimeOrZero(x)

Аргументы

  • x — строковое представление времени. String

Возвращаемое значение

Возвращает значение типа Time в случае успешного выполнения, иначе 00:00:00. Time

Примеры

Пример использования

SELECT toTimeOrZero('12:30:45'), toTimeOrZero('invalid')
┌─toTimeOrZero('12:30:45')─┬─toTimeOrZero('invalid')─┐
│                 12:30:45 │                00:00:00 │
└──────────────────────────┴─────────────────────────┘

toUInt128

Введена в версии v1.1

Преобразует входное значение в значение типа UInt128. Выбрасывает исключение в случае ошибки. Функция использует округление в сторону нуля, то есть обрезает дробную часть чисел.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt128('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt128, происходит переполнение или выход за нижнюю границу диапазона результата. Это не считается ошибкой.

См. также:

Синтаксис

toUInt128(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числового значения. Expression

Возвращаемое значение

Возвращает 128-битное целое число без знака. UInt128

Примеры

Пример использования

SELECT
    toUInt128(128),
    toUInt128(128.8),
    toUInt128('128')
FORMAT Vertical
Row 1:
──────
toUInt128(128):   128
toUInt128(128.8): 128
toUInt128('128'): 128

toUInt128OrDefault

Введена в версии v21.11

Подобно функции toUInt128, эта функция преобразует входное значение в значение типа UInt128, но в случае ошибки возвращает значение по умолчанию. Если аргумент default не передан, то в случае ошибки возвращается 0.

Синтаксис

toUInt128OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, возвращаемое при неудачном разборе. UInt128

Возвращаемое значение

Возвращает значение типа UInt128 при успешном разборе, в противном случае возвращает значение по умолчанию, если оно задано, или 0, если нет. UInt128

Примеры

Успешное преобразование

SELECT toUInt128OrDefault('128', CAST('0', 'UInt128'))
128

Неуспешное преобразование

SELECT toUInt128OrDefault('abc', CAST('0', 'UInt128'))
0

toUInt128OrNull

Добавлена в: v21.6

Как и toUInt128, эта функция преобразует входное значение в значение типа UInt128, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt128OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt128, происходит переполнение или потеря значимости результата. Это не считается ошибкой.

См. также:

Синтаксис

toUInt128OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt128, иначе — NULL, если преобразование не удалось. UInt128 или NULL

Примеры

Пример использования

SELECT
    toUInt128OrNull('128'),
    toUInt128OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): \N

toUInt128OrZero

Введена в версии: v1.1

Аналогично функции toUInt128, эта функция преобразует входное значение в значение типа UInt128, но в случае ошибки возвращает 0.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt128OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в диапазоне значений типа UInt128, происходит переполнение или выход результата за нижнюю границу допустимого диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt128OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt128 или 0 в случае, если преобразование не удалось. UInt128

Примеры

Пример использования

SELECT
    toUInt128OrZero('128'),
    toUInt128OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0

toUInt16

Добавлено в: v1.1

Преобразует входное значение в значение типа UInt16. Вызывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типов Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt16('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона значений UInt16, происходит переполнение или выход за нижнюю границу результата. Это не считается ошибкой. Например: SELECT toUInt16(65536) == 0;.

Примечание

Функция использует округление к нулю, то есть отбрасывает дробные разряды чисел.

См. также:

Синтаксис

toUInt16(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 16-битное беззнаковое целое число. UInt16

Примеры

Пример использования

SELECT
    toUInt16(16),
    toUInt16(16.16),
    toUInt16('16')
FORMAT Vertical
Row 1:
──────
toUInt16(16):    16
toUInt16(16.16): 16
toUInt16('16'):  16

toUInt16OrDefault

Введена в: v21.11

Аналогично toUInt16, эта функция преобразует входное значение в тип UInt16, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, в случае ошибки возвращается 0.

Синтаксис

toUInt16OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, возвращаемое, если преобразование не удалось. UInt16

Возвращаемое значение

Возвращает значение типа UInt16 при успешном преобразовании, в противном случае — значение по умолчанию, если оно указано, или 0, если нет. UInt16

Примеры

Успешное преобразование

SELECT toUInt16OrDefault('16', CAST('0', 'UInt16'))
16

Ошибка преобразования

SELECT toUInt16OrDefault('abc', CAST('0', 'UInt16'))
0

toUInt16OrNull

Введена в версии: v1.1

Подобно toUInt16, эта функция преобразует входное значение в значение типа UInt16, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt16OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt16, происходит переполнение или выход результата за пределы диапазона (underflow). Это не считается ошибкой.

См. также:

Синтаксис

toUInt16OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt16 или NULL при неудачном преобразовании. UInt16 или NULL

Примеры

Пример использования

SELECT
    toUInt16OrNull('16'),
    toUInt16OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrNull('16'):  16
toUInt16OrNull('abc'): \N

toUInt16OrZero

Появилась в версии: v1.1

Подобно функции toUInt16, эта функция преобразует входное значение в значение типа UInt16, но возвращает 0 в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления значений типов (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений типов с плавающей запятой (Float*), включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt16OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона типа UInt16, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt16OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt16, в противном случае — 0, если преобразование не удалось. UInt16

Примеры

Пример использования

SELECT
    toUInt16OrZero('16'),
    toUInt16OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt16OrZero('16'):  16
toUInt16OrZero('abc'): 0

toUInt256

Введена в версии: v1.1

Преобразует входное значение в значение типа UInt256. Вызывает исключение в случае ошибки. Функция использует округление к нулю, то есть отбрасывает дробные разряды чисел.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типов Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt256('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt256, результат переполняется или выходит за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt256(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 256-битное беззнаковое целое число. UInt256

Примеры

Пример использования

SELECT
    toUInt256(256),
    toUInt256(256.256),
    toUInt256('256')
FORMAT Vertical
Row 1:
──────
toUInt256(256):     256
toUInt256(256.256): 256
toUInt256('256'):   256

toUInt256OrDefault

Добавлено в: v21.11

Подобно функции toUInt256, эта функция преобразует входное значение в тип UInt256, но в случае ошибки возвращает значение по умолчанию. Если аргумент default не передан, то в случае ошибки возвращается 0.

Синтаксис

toUInt256OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, которое возвращается при неуспешном разборе. UInt256

Возвращаемое значение

Возвращает значение типа UInt256 при успешном преобразовании, иначе возвращает значение по умолчанию, если оно задано, или 0, если нет. UInt256

Примеры

Успешное преобразование

SELECT toUInt256OrDefault('-256', CAST('0', 'UInt256'))
0

Ошибка преобразования

SELECT toUInt256OrDefault('abc', CAST('0', 'UInt256'))
0

toUInt256OrNull

Добавлена в версии: v20.8

Как и toUInt256, эта функция преобразует входное значение в значение типа UInt256, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления целочисленных типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt256OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона значений UInt256, происходит переполнение или занижение результата. Это не считается ошибкой.

См. также:

Синтаксис

toUInt256OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt256 или NULL при неуспешном преобразовании. UInt256 или NULL

Примеры

Пример использования

SELECT
    toUInt256OrNull('256'),
    toUInt256OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): \N

toUInt256OrZero

Появилась в версии: v20.8

Как и toUInt256, эта функция преобразует входное значение в значение типа UInt256, но в случае ошибки возвращает 0.

Поддерживаемые аргументы:

  • Строковые представления (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt256OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt256, происходит переполнение или занижение результата. Это не считается ошибкой.

См. также:

Синтаксис

toUInt256OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt256, или 0 в случае неуспешного преобразования. UInt256

Примеры

Пример использования

SELECT
    toUInt256OrZero('256'),
    toUInt256OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0

toUInt32

Добавлено в версии: v1.1

Преобразует входное значение к типу UInt32. Выбрасывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типа Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt32('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона типа UInt32, результат выходит за верхнюю или нижнюю границу диапазона. Это не считается ошибкой. Например: SELECT toUInt32(4294967296) == 0;

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть числа.

См. также:

Синтаксис

toUInt32(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает значение 32-битного беззнакового целого числа. UInt32

Примеры

Пример использования

SELECT
    toUInt32(32),
    toUInt32(32.32),
    toUInt32('32')
FORMAT Vertical
Row 1:
──────
toUInt32(32):    32
toUInt32(32.32): 32
toUInt32('32'):  32

toUInt32OrDefault

Добавлена в версии: v21.11

Как и toUInt32, эта функция преобразует входное значение в значение типа UInt32, но в случае ошибки возвращает значение по умолчанию. Если значение default не передано, в случае ошибки возвращается 0.

Синтаксис

toUInt32OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, которое возвращается при неуспешном разборе. UInt32

Возвращаемое значение

Возвращает значение типа UInt32 при успешном преобразовании, в противном случае — значение по умолчанию, если оно передано, или 0, если нет. UInt32

Примеры

Успешное преобразование

SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))
32

Неуспешное преобразование

SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))
0

toUInt32OrNull

Введена в версии: v1.1

Как и toUInt32, эта функция преобразует входное значение в значение типа UInt32, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (функция возвращает NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt32OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt32, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt32OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt32, при неуспешном преобразовании — NULL. UInt32 или NULL

Примеры

Пример использования

SELECT
    toUInt32OrNull('32'),
    toUInt32OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrNull('32'):  32
toUInt32OrNull('abc'): \N

toUInt32OrZero

Введена в версии v1.1

Аналогично toUInt32, эта функция преобразует входное значение в значение типа UInt32, но возвращает 0 в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt32OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt32, происходит переполнение или выход результата за нижнюю границу диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt32OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt32, в противном случае 0, если преобразование не удалось. UInt32

Примеры

Пример использования

SELECT
    toUInt32OrZero('32'),
    toUInt32OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt32OrZero('32'):  32
toUInt32OrZero('abc'): 0

toUInt64

Добавлено в: v1.1

Преобразует входное значение в значение типа UInt64. Вызывает исключение в случае ошибки.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int*.
  • Значения типа Float*.

Неподдерживаемые типы:

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt64('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt64, происходит переполнение или, наоборот, выход за нижнюю границу диапазона. Это не считается ошибкой. Например: SELECT toUInt64(18446744073709551616) == 0;

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть чисел.

Смотрите также:

Синтаксис

toUInt64(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает значение 64-битного целого числа без знака. UInt64

Примеры

Пример использования

SELECT
    toUInt64(64),
    toUInt64(64.64),
    toUInt64('64')
FORMAT Vertical
Row 1:
──────
toUInt64(64):    64
toUInt64(64.64): 64
toUInt64('64'):  64

toUInt64OrDefault

Появилась в версии: v21.11

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но при ошибке возвращает значение по умолчанию. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt64OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный аргумент. Значение по умолчанию, которое возвращается, если парсинг не удался. UInt64

Возвращаемое значение

При успешном преобразовании возвращает значение типа UInt64, в противном случае возвращает значение по умолчанию, если оно передано, или 0, если нет. UInt64

Примеры

Успешное преобразование

SELECT toUInt64OrDefault('64', CAST('0', 'UInt64'))
64

Ошибка преобразования

SELECT toUInt64OrDefault('abc', CAST('0', 'UInt64'))
0

toUInt64OrNull

Введена в: v1.1

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления целочисленных типов (U)Int*.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt64OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt64, происходит переполнение или выход результата за пределы диапазона (underflow). Это не считается ошибкой.

См. также:

Синтаксис

toUInt64OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt64, в противном случае — NULL, если преобразование не удалось. UInt64 или NULL

Примеры

Пример использования

SELECT
    toUInt64OrNull('64'),
    toUInt64OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrNull('64'):  64
toUInt64OrNull('abc'): \N

toUInt64OrZero

Введена в версии v1.1

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но возвращает 0 в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int*.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений типа Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt64OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt64, происходит переполнение или выход результата за нижнюю границу диапазона (underflow). Это не считается ошибкой.

См. также:

Синтаксис

toUInt64OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt64, в противном случае 0, если преобразование не удалось. UInt64

Примеры

Пример использования

SELECT
    toUInt64OrZero('64'),
    toUInt64OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt64OrZero('64'):  64
toUInt64OrZero('abc'): 0

toUInt8

Появилась в версии: v1.1

Преобразует входное значение в значение типа UInt8. В случае ошибки выбрасывает исключение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int*.
  • Значения типов Float*.

Неподдерживаемые аргументы:

  • Строковые представления значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt8('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt8, происходит переполнение или выход результата за нижнюю границу диапазона (underflow). Это не считается ошибкой. Например: SELECT toUInt8(256) == 0;.

Примечание

Функция использует округление к нулю, то есть отбрасывает дробную часть числа.

См. также:

Синтаксис

toUInt8(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression

Возвращаемое значение

Возвращает 8-битное беззнаковое целое число. UInt8

Примеры

Пример использования

SELECT
    toUInt8(8),
    toUInt8(8.8),
    toUInt8('8')
FORMAT Vertical
Row 1:
──────
toUInt8(8):   8
toUInt8(8.8): 8
toUInt8('8'): 8

toUInt8OrDefault

Добавлено в: v21.11

Подобно toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt8OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. String или (U)Int* или Float*
  • default — необязательный параметр. Значение по умолчанию, которое возвращается, если разобрать значение не удалось. UInt8

Возвращаемое значение

Возвращает значение типа UInt8 при успешном преобразовании, в противном случае возвращает значение по умолчанию, если оно передано, или 0, если нет. UInt8

Примеры

Успешное преобразование

SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))
8

Ошибка преобразования

SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))
0

toUInt8OrNull

Введена в версии v1.1

Как и toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает NULL в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления значений типов (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления обычных чисел с плавающей точкой (Float*), включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toUInt8OrNull('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах типа UInt8, происходит переполнение или выход результата за пределы диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt8OrNull(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt8, в противном случае при неудачном преобразовании — NULL. UInt8 или NULL

Примеры

Пример использования

SELECT
    toUInt8OrNull('42'),
    toUInt8OrNull('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrNull('42'):  42
toUInt8OrNull('abc'): \N

toUInt8OrZero

Введена в: v1.1

Как и toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает 0 в случае ошибки.

Поддерживаемые аргументы:

  • Строковые представления целочисленных значений типов (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления обычных значений типов Float*, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toUInt8OrZero('0xc0fe');.
Примечание

Если входное значение не может быть представлено в пределах диапазона UInt8, происходит переполнение или выход результата за пределы диапазона. Это не считается ошибкой.

См. также:

Синтаксис

toUInt8OrZero(x)

Аргументы

  • x — строковое представление числа. String

Возвращаемое значение

Возвращает значение типа UInt8, в противном случае — 0, если преобразование выполнить не удалось. UInt8

Примеры

Пример использования

SELECT
    toUInt8OrZero('-8'),
    toUInt8OrZero('abc')
FORMAT Vertical
Row 1:
──────
toUInt8OrZero('-8'):  0
toUInt8OrZero('abc'): 0

toUUID

Введено в версии: v1.1

Преобразует значение типа String в значение типа UUID.

Синтаксис

toUUID(string)

Аргументы

Возвращаемое значение

Возвращает UUID на основе его строкового представления. UUID

Примеры

Пример использования

SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid
┌─────────────────────────────────uuid─┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘

toUUIDOrZero

Добавлена в версии: v20.12

Преобразует входное значение в значение типа UUID, но в случае ошибки возвращает нулевой UUID. Аналогична toUUID, но возвращает нулевой UUID (00000000-0000-0000-0000-000000000000) вместо генерации исключения при ошибках преобразования.

Поддерживаемые аргументы:

  • Строковые представления UUID в стандартном формате (8-4-4-4-12 шестнадцатеричных цифр).
  • Строковые представления UUID без дефисов (32 шестнадцатеричные цифры).

Неподдерживаемые аргументы (возвращают нулевой UUID):

  • Неверные строковые форматы.
  • Типы, отличные от строк.

Синтаксис

toUUIDOrZero(x)

Аргументы

  • x — строковое представление UUID. String

Возвращаемое значение

Возвращает значение UUID в случае успеха, иначе — нулевой UUID (00000000-0000-0000-0000-000000000000). UUID

Примеры

Пример использования

SELECT
    toUUIDOrZero('550e8400-e29b-41d4-a716-446655440000') AS valid_uuid,
    toUUIDOrZero('invalid-uuid') AS invalid_uuid
┌─valid_uuid───────────────────────────┬─invalid_uuid─────────────────────────┐
│ 550e8400-e29b-41d4-a716-446655440000 │ 00000000-0000-0000-0000-000000000000 │
└──────────────────────────────────────┴──────────────────────────────────────┘

toUnixTimestamp64Micro

Введена в версии: v20.5

Преобразует значение типа DateTime64 в значение типа Int64 с фиксированной точностью до микросекунд. Входное значение масштабируется в большую или меньшую сторону в зависимости от его точности.

Примечание

Результирующее значение задаётся относительно UTC, а не относительно часового пояса входного значения.

Синтаксис

toUnixTimestamp64Micro(value)

Аргументы

  • value — значение типа DateTime64 с любой точностью. DateTime64

Возвращаемое значение

Возвращает Unix‑метку времени в микросекундах. Int64

Примеры

Пример использования

WITH toDateTime64('2025-02-13 23:31:31.011123', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);
┌─toUnixTimestamp64Micro(dt64)─┐
│               1739489491011123 │
└────────────────────────────────┘

toUnixTimestamp64Milli

Добавлена в версии: v20.5

Преобразует значение типа DateTime64 в значение типа Int64 с фиксированной точностью до миллисекунд. Входное значение соответствующим образом масштабируется (увеличивается или уменьшается) в зависимости от его точности.

Примечание

Возвращаемое значение отсчитывается относительно UTC, а не относительно часового пояса входного значения.

Синтаксис

toUnixTimestamp64Milli(value)

Аргументы

  • value — значение типа DateTime64 с любой точностью. DateTime64

Возвращаемое значение

Возвращает Unix‑метку времени в миллисекундах. Int64

Примеры

Пример использования

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);
┌─toUnixTimestamp64Milli(dt64)─┐
│                1739489491011 │
└──────────────────────────────┘

toUnixTimestamp64Nano

Впервые представлена в версии v20.5

Преобразует DateTime64 в значение Int64 с фиксированной наносекундной точностью. Входное значение масштабируется вверх или вниз в зависимости от его точности.

Примечание

Выходное значение задаётся относительно UTC, а не относительно часового пояса исходного значения.

Синтаксис

toUnixTimestamp64Nano(value)

Аргументы

  • value — значение типа DateTime64 с любой точностью. DateTime64

Возвращаемое значение

Возвращает метку времени Unix в наносекундах. Int64

Примеры

Пример использования

WITH toDateTime64('2025-02-13 23:31:31.011123456', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);
┌─toUnixTimestamp64Nano(dt64)────┐
│            1739489491011123456 │
└────────────────────────────────┘

toUnixTimestamp64Second

Добавлено в: v24.12

Преобразует DateTime64 в значение Int64 с фиксированной секундной точностью. Входное значение масштабируется вверх или вниз в зависимости от его точности.

Примечание

Выходное значение задаётся относительно UTC, а не относительно часового пояса входного значения.

Синтаксис

toUnixTimestamp64Second(value)

Аргументы

  • value — значение DateTime64 с любой точностью. DateTime64

Возвращаемое значение

Возвращает Unix-метку времени в секундах. Int64

Примеры

Пример использования

WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);
┌─toUnixTimestamp64Second(dt64)─┐
│                    1739489491 │
└───────────────────────────────┘