Common issues with data conversion
ClickHouse generally uses the same behavior as C++ programs.
to<type> functions and cast behave differently in some cases, for example in case of LowCardinality: cast removes LowCardinality trait to<type> functions don’t. The same with Nullable, this behaviour is not compatible with SQL standard, and it can be changed using cast_keep_nullable setting.
Example:
SELECT
toTypeName(toLowCardinality('') AS val) AS source_type,
toTypeName(toString(val)) AS to_type_result_type,
toTypeName(CAST(val, 'String')) AS cast_result_type
┌Notes on toString functions
The toString family of functions allows for converting between numbers, strings (but not fixed strings), dates, and dates with times.
All of these functions accept one argument.
- When converting to or from a string, the value is formatted or parsed using the same rules as for the TabSeparated format (and almost all other text formats). If the string can’t be parsed, an exception is thrown and the request is canceled.
- When converting dates to numbers or vice versa, the date corresponds to the number of days since the beginning of the Unix epoch.
- When converting dates with times to numbers or vice versa, the date with time corresponds to the number of seconds since the beginning of the Unix epoch.
- The
toStringfunction of theDateTimeargument can take a second String argument containing the name of the time zone, for example:Europe/Amsterdam. In this case, the time is formatted according to the specified time zone.
Notes on toDate/toDateTime functions
The date and date-with-time formats for the toDate/toDateTime functions are defined as follows:
YYYY-MM-DD
YYYY-MM-DD hh:mm:ssAs an exception, if converting from UInt32, Int32, UInt64, or Int64 numeric types to Date, and if the number is greater than or equal to 65536, the number is interpreted as a Unix timestamp (and not as the number of days) and is rounded to the date.
This allows support for the common occurrence of writing toDate(unix_timestamp), which otherwise would be an error and would require writing the more cumbersome toDate(toDateTime(unix_timestamp)).
Conversion between a date and a date with time is performed the natural way: by adding a null time or dropping the time.
Conversion between numeric types uses the same rules as assignments between different numeric types in C++.
Example
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 │
└─────────────────────┴───────────────────┴─────────────────────┘Also see the toUnixTimestamp function.
CAST
Introduced in: v1.1.0
Converts a value to a specified data type. Unlike the reinterpret function, CAST tries to generate the same value in the target type. If that is not possible, an exception is raised.
Syntax
CAST(x, T)
or CAST(x AS T)
or x::TArguments
Returned value
Returns the converted value with the target data type. Any
Examples
Basic usage
SELECT CAST(42, 'String')┌─CAST(42, 'String')─┐
│ 42 │
└────────────────────┘Using AS syntax
SELECT CAST('2025-01-01' AS Date)┌─CAST('2025-01-01', 'Date')─┐
│ 2025-01-01 │
└────────────────────────────┘Using :: syntax
SELECT '123'::UInt32┌─CAST('123', 'UInt32')─┐
│ 123 │
└───────────────────────┘DATE
Introduced in: v21.2.0
Converts the argument to the Date data type. This is a MySQL compatibility alias for toDate. It behaves the same as toDate.
Syntax
DATE(expr)Arguments
Returned value
Returns a Date value. Date
Examples
Basic usage
SELECT DATE('2023-01-01')2023-01-01accurateCast
Introduced in: v1.1.0
Converts a value to a specified data type. Unlike CAST, accurateCast performs stricter type checking and throws an exception if the conversion would result in a loss of data precision or if the conversion is not possible.
This function is safer than regular CAST as it prevents precision loss and invalid conversions.
Syntax
accurateCast(x, T)Arguments
Returned value
Returns the converted value with the target data type. Any
Examples
Successful conversion
SELECT accurateCast(42, 'UInt16')┌─accurateCast(42, 'UInt16')─┐
│ 42 │
└────────────────────────────┘String to number
SELECT accurateCast('123.45', 'Float64')┌─accurateCast('123.45', 'Float64')─┐
│ 123.45 │
└───────────────────────────────────┘accurateCastOrDefault
Introduced in: v21.1.0
Converts a value to a specified data type.
Like accurateCast, but returns a default value instead of throwing an exception if the conversion cannot be performed accurately.
If a default value is provided as the second argument, it must be of the target type. If no default value is provided, the default value of the target type is used.
Syntax
accurateCastOrDefault(x, T[, default_value])Arguments
x— A value to convert.AnyT— The target data type name.const Stringdefault_value— Optional. Default value to return if conversion fails.Any
Returned value
Returns the converted value with the target data type, or the default value if conversion is not possible. Any
Examples
Successful conversion
SELECT accurateCastOrDefault(42, 'String')┌─accurateCastOrDefault(42, 'String')─┐
│ 42 │
└─────────────────────────────────────┘Failed conversion with explicit default
SELECT accurateCastOrDefault('abc', 'UInt32', 999::UInt32)┌─accurateCastOrDefault('abc', 'UInt32', CAST('999', 'UInt32'))─┐
│ 999 │
└───────────────────────────────────────────────────────────────┘Failed conversion with implicit default
SELECT accurateCastOrDefault('abc', 'UInt32')┌─accurateCastOrDefault('abc', 'UInt32')─┐
│ 0 │
└────────────────────────────────────────┘accurateCastOrNull
Introduced in: v1.1.0
Converts a value to a specified data type.
Like accurateCast, but returns NULL instead of throwing an exception if the conversion cannot be performed accurately.
This function combines the safety of accurateCast with graceful error handling.
Syntax
accurateCastOrNull(x, T)Arguments
Returned value
Returns the converted value with the target data type, or NULL if conversion is not possible. Any
Examples
Successful conversion
SELECT accurateCastOrNull(42, 'String')┌─accurateCastOrNull(42, 'String')─┐
│ 42 │
└──────────────────────────────────┘Failed conversion returns NULL
SELECT accurateCastOrNull('abc', 'UInt32')┌─accurateCastOrNull('abc', 'UInt32')─┐
│ ᴺᵁᴸᴸ │
└─────────────────────────────────────┘formatRow
Introduced in: v20.7.0
Converts arbitrary expressions into a string via given format.
Syntax
formatRow(format, x, y, ...)Arguments
Returned value
A formatted string. (for text formats it’s usually terminated with the new line character). String
Examples
Basic usage
SELECT formatRow('CSV', number, 'good')
FROM numbers(3)┌─formatRow('CSV', number, 'good')─┐
│ 0,"good" ↴│
│ 1,"good" ↴│
│ 2,"good" ↴│
└──────────────────────────────────┘With custom format
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
Introduced in: v20.7.0
Same as formatRow, but trims the newline character of each row.
Converts arbitrary expressions into a string via given format, but removes any trailing newline characters from the result.
Syntax
formatRowNoNewline(format, x, y, ...)Arguments
Returned value
Returns a formatted string with newlines removed. String
Examples
Basic usage
SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3)┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good" │
│ 1,"good" │
│ 2,"good" │
└───────────────────────────────────────────┘fromUnixTimestamp64Micro
Introduced in: v20.5.0
Converts a Unix timestamp in microseconds to a DateTime64 value with microsecond precision.
The input value is treated as a Unix timestamp with microsecond precision (number of microseconds since 1970-01-01 00:00:00 UTC).
Syntax
fromUnixTimestamp64Micro(value[, timezone])Arguments
value— Unix timestamp in microseconds.Int64timezone— Optional. Timezone for the returned value.String
Returned value
Returns a DateTime64 value with microsecond precision. DateTime64(6)
Examples
Usage example
SELECT fromUnixTimestamp64Micro(1640995200123456)┌─fromUnixTimestamp64Micro(1640995200123456)─┐
│ 2022-01-01 00:00:00.123456 │
└────────────────────────────────────────────┘fromUnixTimestamp64Milli
Introduced in: v20.5.0
Converts a Unix timestamp in milliseconds to a DateTime64 value with millisecond precision.
The input value is treated as a Unix timestamp with millisecond precision (number of milliseconds since 1970-01-01 00:00:00 UTC).
Syntax
fromUnixTimestamp64Milli(value[, timezone])Arguments
value— Unix timestamp in milliseconds.Int64timezone— Optional. Timezone for the returned value.String
Returned value
A DateTime64 value with millisecond precision. DateTime64(3)
Examples
Usage example
SELECT fromUnixTimestamp64Milli(1640995200123)┌─fromUnixTimestamp64Milli(1640995200123)─┐
│ 2022-01-01 00:00:00.123 │
└─────────────────────────────────────────┘fromUnixTimestamp64Nano
Introduced in: v20.5.0
Converts a Unix timestamp in nanoseconds to a DateTime64 value with nanosecond precision.
The input value is treated as a Unix timestamp with nanosecond precision (number of nanoseconds since 1970-01-01 00:00:00 UTC).
Syntax
fromUnixTimestamp64Nano(value[, timezone])Arguments
value— Unix timestamp in nanoseconds.Int64timezone— Optional. Timezone for the returned value.String
Returned value
Returns a DateTime64 value with nanosecond precision. DateTime64(9)
Examples
Usage example
SELECT fromUnixTimestamp64Nano(1640995200123456789)┌─fromUnixTimestamp64Nano(1640995200123456789)─┐
│ 2022-01-01 00:00:00.123456789 │
└──────────────────────────────────────────────┘fromUnixTimestamp64Second
Introduced in: v24.12.0
Converts a Unix timestamp in seconds to a DateTime64 value with second precision.
The input value is treated as a Unix timestamp with second precision (number of seconds since 1970-01-01 00:00:00 UTC).
Syntax
fromUnixTimestamp64Second(value[, timezone])Arguments
value— Unix timestamp in seconds.Int64timezone— Optional. Timezone for the returned value.String
Returned value
Returns a DateTime64 value with second precision. DateTime64(0)
Examples
Usage example
SELECT fromUnixTimestamp64Second(1640995200)┌─fromUnixTimestamp64Second(1640995200)─┐
│ 2022-01-01 00:00:00 │
└───────────────────────────────────────┘kqlParameterCast
Introduced in: v26.9.0
Checks a value against a declared Kusto Query Language type and converts it to that type’s
ClickHouse carrier: an argument whose type does not belong to the declared KQL type is
rejected during analysis, and a value that does not fit (an int overflow, say) is a per-row
error. The second argument is the declared KQL type name and the third describes the
parameter for the error message; both must be constant strings.
This function backs typed function parameters when dialect = 'kusto'. It is not meant to be
called directly from SQL.
Syntax
kqlParameterCast(value, type, parameter)Arguments
value— The argument a KQL function call supplies. -type— The declared KQL type name, a constant string. -parameter— A description of the parameter, a constant string used in the error message.
Returned value
value as the declared type’s ClickHouse carrier.
Examples
long
SELECT kqlParameterCast(5, 'long', 'the parameter') AS x, toTypeName(x)5 Int64real
SELECT kqlParameterCast(5, 'real', 'the parameter') AS x, toTypeName(x)5 Float64kqlToTimespan
Introduced in: v26.8.0
Converts a value to a timespan (an Interval in nanoseconds) as the Kusto Query Language’s
totimespan() does: a timespan passes through, a number counts days, and a string is read as
[-][d.]hh:mm:ss[.fffffff] - converting to NULL when it does not parse.
This function backs totimespan() when dialect = 'kusto'. It is not meant to be called
directly from SQL.
Syntax
kqlToTimespan(x)Arguments
x— A timespan, a number of days, or a string spelling a timespan.
Returned value
The value as an interval of nanoseconds; NULL for a string that does not spell a timespan.
Examples
string
SELECT kqlToTimespan('0.00:01:00')60000000000days
SELECT kqlToTimespan(2)172800000000000parseDateTime
Introduced in: v23.3.0
Parses a date and time string according to a MySQL date format string.
This function is the inverse of formatDateTime.
It parses a String argument using a format String. Returns a DateTime type.
Syntax
parseDateTime(time_string, format[, timezone])Aliases: TO_UNIXTIME
Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns a DateTime parsed from the input string according to the MySQL style format string. DateTime
Examples
Usage example
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
Introduced in: v20.9.0
Converts a string representation of a date and time to the DateTime data type.
The function parses ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse’s and some other date and time formats.
Syntax
parseDateTime32BestEffort(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsedString
Returned value
Returns time_string as a DateTime. DateTime
Examples
Usage example
SELECT parseDateTime32BestEffort('23/10/2025 12:12:57')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2025-10-23 12:12:57 │
└───────────────────────────┘With timezone
SELECT parseDateTime32BestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2025-08-18 10:22:16 │
└───────────────────────────┘Unix timestamp
SELECT parseDateTime32BestEffort('1284101485')
AS parseDateTime32BestEffort┌─parseDateTime32BestEffort─┐
│ 2010-09-10 06:51:25 │
└───────────────────────────┘parseDateTime32BestEffortOrNull
Introduced in: v20.9.0
Same as parseDateTime32BestEffort except that it returns NULL when it encounters a date format that cannot be processed.
Syntax
parseDateTime32BestEffortOrNull(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns a DateTime object parsed from the string, or NULL if the parsing fails. DateTime
Examples
Usage example
SELECT
parseDateTime32BestEffortOrNull('23/10/2025 12:12:57') AS valid,
parseDateTime32BestEffortOrNull('invalid date') AS invalid┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTime32BestEffortOrZero
Introduced in: v20.9.0
Same as parseDateTime32BestEffort except that it returns a zero date or a zero date time when it encounters a date format that cannot be processed.
Syntax
parseDateTime32BestEffortOrZero(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns a DateTime object parsed from the string, or zero date (1970-01-01 00:00:00) if the parsing fails. DateTime
Examples
Usage example
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
Introduced in: v24.11.0
Parses a date and time string with sub-second precision according to a MySQL date format string.
This function is the inverse of formatDateTime for DateTime64.
It parses a String argument using a format String. Returns a DateTime64 type which can represent dates from 0000 to 9999 with sub-second precision (high precisions cover a narrower range because the value is stored in an Int64 number of ticks: precision 8 reaches about 4892 and precision 9 spans 1677 to 2262).
Syntax
parseDateTime64(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns a DateTime64 parsed from the input string according to the MySQL style format string. DateTime64
Examples
Usage example
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.123000 │
└────────────────────────────────────────────────────────────────────┘parseDateTime64BestEffort
Introduced in: v20.1.0
Same as parseDateTimeBestEffort function but also parse milliseconds and microseconds and returns DateTime64 data type.
Syntax
parseDateTime64BestEffort(time_string[, precision[, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to the DateTime64 data type. DateTime64
Examples
Usage example
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
Introduced in: v20.1.0
Same as parseDateTime64BestEffort except that it returns NULL when it encounters a date format that cannot be processed.
Syntax
parseDateTime64BestEffortOrNull(time_string[, precision[, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to DateTime64, or NULL if the input cannot be parsed. DateTime64 or NULL
Examples
Usage example
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
Introduced in: v20.1.0
Same as parseDateTime64BestEffort except that it returns zero date or zero date time when it encounters a date format that cannot be processed.
Syntax
parseDateTime64BestEffortOrZero(time_string[, precision[, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to DateTime64, or zero date/datetime (1970-01-01 00:00:00.000) if the input cannot be parsed. DateTime64
Examples
Usage example
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
Introduced in: v22.8.0
Same as parseDateTime64BestEffort, except that this function prefers US date format (MM/DD/YYYY etc.) in case of ambiguity.
Syntax
parseDateTime64BestEffortUS(time_string [, precision [, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to DateTime64 using US date format preference for ambiguous cases. DateTime64
Examples
Usage example
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
Introduced in: v22.8.0
Same as parseDateTime64BestEffort, except that this function prefers US date format (MM/DD/YYYY etc.) in case of ambiguity and returns NULL when it encounters a date format that cannot be processed.
Syntax
parseDateTime64BestEffortUSOrNull(time_string[, precision[, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to DateTime64 using US format preference, or NULL if the input cannot be parsed. DateTime64 or NULL
Examples
Usage example
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
Introduced in: v22.8.0
Same as parseDateTime64BestEffort, except that this function prefers US date format (MM/DD/YYYY etc.) in case of ambiguity and returns zero date or zero date time when it encounters a date format that cannot be processed.
Syntax
parseDateTime64BestEffortUSOrZero(time_string [, precision [, time_zone]])Arguments
time_string— String containing a date or date with time to convert.Stringprecision— Optional. Required precision.3for milliseconds,6for microseconds. Default:3.UInt8time_zone— Optional. Timezone. The function parsestime_stringaccording to the timezone.String
Returned value
Returns time_string converted to DateTime64 using US format preference, or zero date/datetime (1970-01-01 00:00:00.000) if the input cannot be parsed. DateTime64
Examples
Usage example
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
Introduced in: v24.10.0
Parses a date and time string with sub-second precision according to a Joda date format string.
This function is the inverse of formatDateTimeInJodaSyntax for DateTime64.
It parses a String argument using a Joda-style format String. Returns a DateTime64 type which can represent dates from 0000 to 9999 with sub-second precision (high precisions cover a narrower range because the value is stored in an Int64 number of ticks: precision 8 reaches about 4892 and precision 9 spans 1677 to 2262).
Refer to Joda Time documentation for the format patterns.
Syntax
parseDateTime64InJodaSyntax(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns a DateTime64 parsed from the input string according to the Joda style format string. DateTime64
Examples
Usage example
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
Introduced in: v24.10.0
Same as parseDateTime64InJodaSyntax but returns NULL when it encounters an unparsable date format.
Syntax
parseDateTime64InJodaSyntaxOrNull(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime64 parsed from input string, or NULL if parsing fails. Nullable(DateTime64)
Examples
Usage example
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
Introduced in: v24.10.0
Same as parseDateTime64InJodaSyntax but returns zero date when it encounters an unparsable date format.
Syntax
parseDateTime64InJodaSyntaxOrZero(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime64 parsed from input string, or zero DateTime64 if parsing fails. DateTime64
Examples
Usage example
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
Introduced in: v24.11.0
Same as parseDateTime64 but returns NULL when it encounters an unparsable date format.
Syntax
parseDateTime64OrNull(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime64 parsed from input string, or NULL if parsing fails. Nullable(DateTime64)
Examples
Usage example
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.123000 │
└──────────────────────────────────────────────────────────────────────────┘parseDateTime64OrZero
Introduced in: v24.11.0
Same as parseDateTime64 but returns zero date when it encounters an unparsable date format.
Syntax
parseDateTime64OrZero(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime64.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime64 parsed from input string, or zero DateTime64 if parsing fails. DateTime64
Examples
Usage example
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.123000 │
└──────────────────────────────────────────────────────────────────────────┘parseDateTimeBestEffort
Introduced in: v1.1.0
Converts a date and time in the String representation to DateTime data type. The function parses ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse’s and some other date and time formats.
Supported non-standard formats:
- A string containing 9..10 digit unix timestamp.
- A string with a date and a time component:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ss, etc. - A string with a date, but no time component:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYetc. - A string with a day and time:
DD,DD hh,DD hh:mm. In this caseMMis substituted by01. - A string that includes the date and time along with time zone offset information:
YYYY-MM-DD hh:mm:ss ±h:mm, etc. - A syslog timestamp:
Mmm dd hh:mm:ss. For example,Jun 9 14:20:32.
For all of the formats with separator the function parses months names expressed by their full name or by the first three letters of a month name. If the year is not specified, it is considered to be equal to the current year.
Syntax
parseDateTimeBestEffort(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime. DateTime
Examples
Usage example
SELECT parseDateTimeBestEffort('23/10/2025 12:12:57') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-10-23 12:12:57 │
└─────────────────────────┘With timezone
SELECT parseDateTimeBestEffort('Sat, 18 Aug 2025 07:22:16 GMT', 'Asia/Istanbul') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-08-18 10:22:16 │
└─────────────────────────┘Unix timestamp
SELECT parseDateTimeBestEffort('1735689600') AS parseDateTimeBestEffort┌─parseDateTimeBestEffort─┐
│ 2025-01-01 00:00:00 │
└─────────────────────────┘parseDateTimeBestEffortOrNull
Introduced in: v1.1.0
The same as parseDateTimeBestEffort except that it returns NULL when it encounters a date format that cannot be processed.
The function parses ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse’s and some other date and time formats.
Supported non-standard formats:
- A string containing 9..10 digit unix timestamp.
- A string with a date and a time component:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ss, etc. - A string with a date, but no time component:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYetc. - A string with a day and time:
DD,DD hh,DD hh:mm. In this caseMMis substituted by01. - A string that includes the date and time along with time zone offset information:
YYYY-MM-DD hh:mm:ss ±h:mm, etc. - A syslog timestamp:
Mmm dd hh:mm:ss. For example,Jun 9 14:20:32.
For all of the formats with separator the function parses months names expressed by their full name or by the first three letters of a month name. If the year is not specified, it is considered to be equal to the current year.
Syntax
parseDateTimeBestEffortOrNull(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime, or NULL if the input cannot be parsed. DateTime or NULL
Examples
Usage example
SELECT parseDateTimeBestEffortOrNull('23/10/2025 12:12:57') AS valid,
parseDateTimeBestEffortOrNull('invalid') AS invalid┌───────────────valid─┬─invalid─┐
│ 2025-10-23 12:12:57 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTimeBestEffortOrZero
Introduced in: v1.1.0
Same as parseDateTimeBestEffort except that it returns a zero date or a zero date time when it encounters a date format that cannot be processed.
The function parses ISO 8601, RFC 1123 - 5.2.14 RFC-822 Date and Time Specification, ClickHouse’s and some other date and time formats.
Supported non-standard formats:
- A string containing 9..10 digit unix timestamp.
- A string with a date and a time component:
YYYYMMDDhhmmss,DD/MM/YYYY hh:mm:ss,DD-MM-YY hh:mm,YYYY-MM-DD hh:mm:ss, etc. - A string with a date, but no time component:
YYYY,YYYYMM,YYYY*MM,DD/MM/YYYY,DD-MM-YYetc. - A string with a day and time:
DD,DD hh,DD hh:mm. In this caseMMis substituted by01. - A string that includes the date and time along with time zone offset information:
YYYY-MM-DD hh:mm:ss ±h:mm, etc. - A syslog timestamp:
Mmm dd hh:mm:ss. For example,Jun 9 14:20:32.
For all of the formats with separator the function parses months names expressed by their full name or by the first three letters of a month name. If the year is not specified, it is considered to be equal to the current year.
Syntax
parseDateTimeBestEffortOrZero(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime, or zero date/datetime (1970-01-01 or 1970-01-01 00:00:00) if the input cannot be parsed. DateTime
Examples
Usage example
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
Introduced in: v1.1.0
This function behaves like parseDateTimeBestEffort for ISO date formats, e.g. YYYY-MM-DD hh:mm:ss, and other date formats where the month and date components can be unambiguously extracted, e.g. YYYYMMDDhhmmss, YYYY-MM, DD hh, or YYYY-MM-DD hh:mm:ss ±h:mm.
If the month and the date components cannot be unambiguously extracted, e.g. MM/DD/YYYY, MM-DD-YYYY, or MM-DD-YY, it prefers the US date format instead of DD/MM/YYYY, DD-MM-YYYY, or DD-MM-YY.
As an exception to the previous statement, if the month is bigger than 12 and smaller or equal than 31, this function falls back to the behavior of parseDateTimeBestEffort, e.g. 15/08/2020 is parsed as 2020-08-15.
Syntax
parseDateTimeBestEffortUS(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime using US date format preference for ambiguous cases. DateTime
Examples
Usage example
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
Introduced in: v1.1.0
Same as parseDateTimeBestEffortUS function except that it returns NULL when it encounters a date format that cannot be processed.
This function behaves like parseDateTimeBestEffort for ISO date formats, but prefers the US date format for ambiguous cases, with NULL return on parsing errors.
Syntax
parseDateTimeBestEffortUSOrNull(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime using US format preference, or NULL if the input cannot be parsed. DateTime or NULL
Examples
Usage example
SELECT parseDateTimeBestEffortUSOrNull('02/10/2025') AS valid_us,
parseDateTimeBestEffortUSOrNull('invalid') AS invalid┌────────────valid_us─┬─invalid─┐
│ 2025-02-10 00:00:00 │ ᴺᵁᴸᴸ │
└─────────────────────┴─────────┘parseDateTimeBestEffortUSOrZero
Introduced in: v1.1.0
Same as parseDateTimeBestEffortUS function except that it returns zero date (1970-01-01) or zero date with time (1970-01-01 00:00:00) when it encounters a date format that cannot be processed.
This function behaves like parseDateTimeBestEffort for ISO date formats, but prefers the US date format for ambiguous cases, with zero return on parsing errors.
Syntax
parseDateTimeBestEffortUSOrZero(time_string[, time_zone])Arguments
time_string— String containing a date and time to convert.Stringtime_zone— Optional. Time zone according to whichtime_stringis parsed.String
Returned value
Returns time_string as a DateTime using US format preference, or zero date/datetime (1970-01-01 or 1970-01-01 00:00:00) if the input cannot be parsed. DateTime
Examples
Usage example
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
Introduced in: v23.3.0
Parses a date and time string according to a Joda date format string.
This function is the inverse of formatDateTimeInJodaSyntax.
It parses a String argument using a Joda-style format String. Returns a DateTime type.
Refer to Joda Time documentation for the format patterns.
Syntax
parseDateTimeInJodaSyntax(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns a DateTime parsed from the input string according to the Joda style format string. DateTime
Examples
Usage example
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
Introduced in: v23.3.0
Same as parseDateTimeInJodaSyntax but returns NULL when it encounters an unparsable date format.
Syntax
parseDateTimeInJodaSyntaxOrNull(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime parsed from input string, or NULL if parsing fails. Nullable(DateTime)
Examples
Usage example
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
Introduced in: v23.3.0
Same as parseDateTimeInJodaSyntax but returns zero date when it encounters an unparsable date format.
Syntax
parseDateTimeInJodaSyntaxOrZero(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string in Joda syntax specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime parsed from input string, or zero DateTime if parsing fails. DateTime
Examples
Usage example
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
Introduced in: v23.3.0
Same as parseDateTime but returns NULL when it encounters an unparsable date format.
Syntax
parseDateTimeOrNull(time_string, format[, timezone])Aliases: str_to_date
Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime parsed from input string, or NULL if parsing fails. Nullable(DateTime)
Examples
Usage example
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
Introduced in: v23.3.0
Same as parseDateTime but returns zero date when it encounters an unparsable date format.
Syntax
parseDateTimeOrZero(time_string, format[, timezone])Arguments
time_string— String to be parsed into DateTime.Stringformat— Format string specifying how to parse time_string.Stringtimezone— Optional. Timezone.String
Returned value
Returns DateTime parsed from input string, or zero DateTime if parsing fails. DateTime
Examples
Usage example
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
Introduced in: v1.1.0
Uses the same source in-memory bytes sequence for the provided value x and reinterprets it to the destination type.
When the destination type is String, a source Array is supported only if its element type is fixed size and contiguous in memory (for example, Array(UInt8) or Array(FixedString(2))); its element bytes are copied verbatim in their native in-memory order, so the result can be reinterpreted back to the original Array type on any architecture. Arrays whose elements are variable-length (for example, Array(String)) or nullable (for example, Array(Nullable(Int32))) are not supported.
Syntax
reinterpret(x, type)Arguments
x— Value to reinterpret. When reinterpreting toString, a sourceArraymust have fixed-size, contiguous elements.Anytype— Destination type. If it is an array, then the array element type must be a fixed length type.String
Returned value
Destination type value. Any
Examples
Usage example
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 │
└─────────────┴──────────────┴───────────────┘Array example
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] │
└────────────────────────────┘Array to String example
SELECT hex(reinterpret([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8), 'String')) AS array_of_UInt8_to_string┌─array_of_UInt8_to_string─┐
│ 0102FF │
└──────────────────────────┘reinterpretAsDate
Introduced in: v1.1.0
Reinterprets the input value as a Date value (assuming little endian order) which is the number of days since the beginning of the Unix epoch 1970-01-01
Syntax
reinterpretAsDate(x)Arguments
x— Number of days since the beginning of the Unix Epoch.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Date. Date
Examples
Usage example
SELECT reinterpretAsDate(65), reinterpretAsDate('A')┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│ 1970-03-07 │ 1970-03-07 │
└───────────────────────┴────────────────────────┘reinterpretAsDateTime
Introduced in: v1.1.0
Reinterprets the input value as a DateTime value (assuming little endian order) which is the number of days since the beginning of the Unix epoch 1970-01-01
Syntax
reinterpretAsDateTime(x)Arguments
x— Number of seconds since the beginning of the Unix Epoch.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Date and Time. DateTime
Examples
Usage example
SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A')┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│ 1970-01-01 00:01:05 │ 1970-01-01 00:01:05 │
└───────────────────────────┴────────────────────────────┘reinterpretAsFixedString
Introduced in: v1.1.0
Reinterprets the input value as a fixed string (assuming little endian order). Null bytes at the end are ignored, for example, the function returns for UInt32 value 255 a string with a single character.
Syntax
reinterpretAsFixedString(x)Arguments
Returned value
Fixed string containing bytes representing x. FixedString
Examples
Usage example
-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))),
hex(reinterpretAsFixedString(toDate('1970-03-07')))┌─hex(reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsFixedString(toDate('1970-03-07')))─┐
│ 510E0000 │ 4100 │
└──────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘reinterpretAsFloat32
Introduced in: v1.1.0
Reinterprets the input value as a value of type Float32.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsFloat32(x)Arguments
x— Value to reinterpret as Float32.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Float32
Examples
Usage example
SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x)┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │ 0.2 │
└────────────┴─────────────────────────┘reinterpretAsFloat64
Introduced in: v1.1.0
Reinterprets the input value as a value of type Float64.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsFloat64(x)Arguments
x— Value to reinterpret as Float64.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Float64
Examples
Usage example
SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x)┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │ 0.2 │
└─────────────────────┴─────────────────────────┘reinterpretAsInt128
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int128.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt128(x)Arguments
x— Value to reinterpret as Int128.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int128
Examples
Usage example
SELECT
toInt64(257) AS x,
toTypeName(x),
reinterpretAsInt128(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64 │ 257 │ Int128 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt16
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int16.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt16(x)Arguments
x— Value to reinterpret as Int16.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int16
Examples
Usage example
SELECT
toInt8(257) AS x,
toTypeName(x),
reinterpretAsInt16(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8 │ 1 │ Int16 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsInt256
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int256.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt256(x)Arguments
x— Value to reinterpret as Int256.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int256
Examples
Usage example
SELECT
toInt128(257) AS x,
toTypeName(x),
reinterpretAsInt256(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128 │ 257 │ Int256 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt32
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int32.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt32(x)Arguments
x— Value to reinterpret as Int32.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int32
Examples
Usage example
SELECT
toInt16(257) AS x,
toTypeName(x),
reinterpretAsInt32(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16 │ 257 │ Int32 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt64
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int64.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt64(x)Arguments
x— Value to reinterpret as Int64.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int64
Examples
Usage example
SELECT
toInt32(257) AS x,
toTypeName(x),
reinterpretAsInt64(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32 │ 257 │ Int64 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsInt8
Introduced in: v1.1.0
Reinterprets the input value as a value of type Int8.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsInt8(x)Arguments
x— Value to reinterpret as Int8.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. Int8
Examples
Usage example
SELECT
toUInt8(257) AS x,
toTypeName(x),
reinterpretAsInt8(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8 │ 1 │ Int8 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsString
Introduced in: v1.1.0
Reinterprets the input value as a string.
For scalar values, the byte order is normalized to little endian, and null bytes at the end are ignored, for example, the function returns for UInt32 value 255 a string with a single character.
For an Array of fixed-size elements, the element bytes are copied verbatim in their native in-memory order, without trimming trailing zero bytes and without normalizing to little endian, so the result can be reinterpreted back to the original Array type on any architecture.
Syntax
reinterpretAsString(x)Arguments
Returned value
String containing bytes representing x. String
Examples
Usage example
-- The result is a sequence of bytes, so it is shown with `hex`.
SELECT
hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05'))),
hex(reinterpretAsString(toDate('1970-03-07')))┌─hex(reinterpretAsString(toDateTime('1970-01-01 01:01:05')))─┬─hex(reinterpretAsString(toDate('1970-03-07')))─┐
│ 510E │ 41 │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘Array to String example
SELECT hex(reinterpretAsString([toUInt8(1), toUInt8(2), toUInt8(255)]::Array(UInt8))) AS array_of_UInt8_to_string┌─array_of_UInt8_to_string─┐
│ 0102FF │
└──────────────────────────┘reinterpretAsUInt128
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt128.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt128(x)Arguments
x— Value to reinterpret as UInt128.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. UInt128
Examples
Usage example
SELECT
toUInt64(257) AS x,
toTypeName(x),
reinterpretAsUInt128(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64 │ 257 │ UInt128 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt16
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt16.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt16(x)Arguments
x— Value to reinterpret as UInt16.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. UInt16
Examples
Usage example
SELECT
toUInt8(257) AS x,
toTypeName(x),
reinterpretAsUInt16(x) AS res,
toTypeName(res)┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8 │ 1 │ UInt16 │
└───┴───────────────┴─────┴─────────────────┘reinterpretAsUInt256
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt256.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt256(x)Arguments
x— Value to reinterpret as UInt256.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. UInt256
Examples
Usage example
SELECT
toUInt128(257) AS x,
toTypeName(x),
reinterpretAsUInt256(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128 │ 257 │ UInt256 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt32
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt32.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt32(x)Arguments
x— Value to reinterpret as UInt32.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. UInt32
Examples
Usage example
SELECT
toUInt16(257) AS x,
toTypeName(x),
reinterpretAsUInt32(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16 │ 257 │ UInt32 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt64
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt64.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt64(x)Arguments
x— Value to reinterpret as UInt64.Int*orUInt*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value of x. UInt64
Examples
Usage example
SELECT
toUInt32(257) AS x,
toTypeName(x),
reinterpretAsUInt64(x) AS res,
toTypeName(res)┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32 │ 257 │ UInt64 │
└─────┴───────────────┴─────┴─────────────────┘reinterpretAsUInt8
Introduced in: v1.1.0
Reinterprets the input value as a value of type UInt8.
Unlike CAST, the function does not attempt to preserve the original value - if the target type is not able to represent the input type, the output is undefined.
Syntax
reinterpretAsUInt8(x)Arguments
x— Value to reinterpret as UInt8.(U)Int*orFloat*orDateorDateTimeorUUIDorStringorFixedString
Returned value
Returns the reinterpreted value x. UInt8
Examples
Usage example
SELECT
toInt8(-1) AS val,
toTypeName(val),
reinterpretAsUInt8(val) AS res,
toTypeName(res);┌─val─┬─toTypeName(val)─┬─res─┬─toTypeName(res)─┐
│ -1 │ Int8 │ 255 │ UInt8 │
└─────┴─────────────────┴─────┴─────────────────┘reinterpretAsUUID
Introduced in: v1.1.0
Accepts a 16 byte string and returns a UUID by interpreting each 8-byte half in little-endian byte order. If the string isn’t long enough, the function works as if the string is padded with the necessary number of null bytes to the end. If the string is longer than 16 bytes, the extra bytes at the end are ignored.
Syntax
reinterpretAsUUID(fixed_string)Arguments
fixed_string— Big-endian byte string.FixedString
Returned value
The UUID type value. UUID
Examples
String to UUID
SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│ 08090a0b-0c0d-0e0f-0001-020304050607 │
└───────────────────────────────────────────────────────────────────────┘toBFloat16
Introduced in: v1.1.0
Converts an input value to a value of type BFloat16. Throws an exception in case of an error.
See also:
Syntax
toBFloat16(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 16-bit brain-float value. BFloat16
Examples
Usage example
SELECT
toBFloat16(toFloat32(42.7)),
toBFloat16(toFloat32('42.7')),
toBFloat16('42.7')
FORMAT Vertical;Row 1:
──────
toBFloat16(toFloat32(42.7)): 42.5
toBFloat16(toFloat32('42.7')): 42.5
toBFloat16('42.7'): 42.5toBFloat16OrNull
Introduced in: v1.1.0
Converts a String input value to a value of type BFloat16. If the string does not represent a floating point value, the function returns NULL.
Supported arguments:
- String representations of numeric values.
Unsupported arguments (return NULL):
- String representations of binary and hexadecimal values.
- Numeric values.
See also:
Syntax
toBFloat16OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Reurns a 16-bit brain-float value, otherwise NULL. BFloat16 or NULL
Examples
Usage example
SELECT toBFloat16OrNull('0x5E'), -- unsupported arguments
toBFloat16OrNull('12.3'), -- typical use
toBFloat16OrNull('12.3456789') -- silent loss of precision\N 12.25 12.3125toBFloat16OrZero
Introduced in: v1.1.0
Converts a String input value to a value of type BFloat16. If the string does not represent a floating point value, the function returns zero.
Supported arguments:
- String representations of numeric values.
Unsupported arguments (return 0):
- String representations of binary and hexadecimal values.
- Numeric values.
See also:
Syntax
toBFloat16OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a 16-bit brain-float value, otherwise 0. BFloat16
Examples
Usage example
SELECT toBFloat16OrZero('0x5E'), -- unsupported arguments
toBFloat16OrZero('12.3'), -- typical use
toBFloat16OrZero('12.3456789') -- silent loss of precision0 12.25 12.3125toBool
Introduced in: v22.2.0
Converts an input value to a value of type Bool.
Syntax
toBool(expr)Arguments
expr— Expression returning a number or a string. For strings, accepts ‘true’ or ‘false’ (case-insensitive).(U)Int*orFloat*orStringorExpression
Returned value
Returns true or false based on evaluation of the argument. Bool
Examples
Usage example
SELECT
toBool(toUInt8(1)),
toBool(toInt8(-1)),
toBool(toFloat32(1.01)),
toBool('true'),
toBool('false'),
toBool('FALSE')
FORMAT VerticalRow 1:
──────
toBool(toUInt8(1)): true
toBool(toInt8(-1)): true
toBool(toFloat32(1.01)): true
toBool('true'): true
toBool('false'): false
toBool('FALSE'): falsetoDate
Introduced in: v1.1.0
Converts an input value to type Date.
Supports conversion from String, FixedString, DateTime, or numeric types.
Syntax
toDate(x)Arguments
x— Input value to convert.StringorFixedStringorDateTimeor(U)Int*orFloat*
Returned value
Returns the converted input value. Date
Examples
String to Date conversion
SELECT toDate('2025-04-15')2025-04-15DateTime to Date conversion
SELECT toDate(toDateTime('2025-04-15 10:30:00'))2025-04-15Integer to Date conversion
SELECT toDate(20297)2025-07-28toDate32
Introduced in: v21.9.0
Converts the argument to the Date32 data type.
If the value is outside the [0000-01-01, 9999-12-31] range, toDate32 returns the border values supported by Date32.
If the argument is of type Date, it’s bounds are taken into account.
Syntax
toDate32(expr)Arguments
Returned value
Returns a calendar date. Date32
Examples
Within range
SELECT toDate32('2025-01-01') AS value, toTypeName(value)
FORMAT VerticalRow 1:
──────
value: 2025-01-01
toTypeName(value): Date32Before 1900
SELECT toDate32('1899-01-01') AS value, toTypeName(value)
FORMAT VerticalRow 1:
──────
value: 1899-01-01
toTypeName(value): Date32toDate32OrDefault
Introduced in: v21.11.0
Converts the argument to the Date32 data type. If the argument cannot be converted, which includes a numeric value outside of the range of Date32, the function returns a default value which is either the second argument (if specified), or otherwise 1900-01-01, the historical default value of Date32 (not its lower boundary, which is 0000-01-01). If the argument has Date type, its borders are taken into account.
Note that, unlike toDate32, this function does not saturate an out-of-range numeric argument to the boundaries of Date32; such an argument is treated as unconvertible.
Syntax
toDate32OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Date32
Returned value
Value of type Date32 if successful, otherwise returns the default value if passed or 1900-01-01 if not. Date32
Examples
Successful conversion
SELECT toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))1930-01-01Failed conversion
SELECT toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))2020-01-01Out-of-range number
SELECT toDate32OrDefault(toUInt64(18446744073709551615), toDate32('2020-01-01'))2020-01-01toDate32OrNull
Introduced in: v21.9.0
Converts an input value to a value of type Date32 but returns NULL if an invalid argument is received.
The same as toDate32 but returns NULL if an invalid argument is received.
Syntax
toDate32OrNull(x)Arguments
x— A string representation of a date.String
Returned value
Returns a Date32 value if successful, otherwise NULL. Date32 or NULL
Examples
Usage example
SELECT toDate32OrNull('2025-01-01'), toDate32OrNull('invalid')┌─toDate32OrNull('2025-01-01')─┬─toDate32OrNull('invalid')─┐
│ 2025-01-01 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴───────────────────────────┘toDate32OrZero
Introduced in: v21.9.0
Converts an input value to a value of type Date32 but returns the default value 1900-01-01 if an invalid argument is received.
The same as toDate32 but returns 1900-01-01 if an invalid argument is received.
Note that 1900-01-01 is a historical default value for invalid input, not the lower boundary of Date32, which is 0000-01-01.
See also:
Syntax
toDate32OrZero(x)Arguments
x— A string representation of a date.String
Returned value
Returns a Date32 value if successful, otherwise the historical default value for invalid input (1900-01-01). Date32
Examples
Usage example
SELECT toDate32OrZero('2025-01-01'), toDate32OrZero('')┌─toDate32OrZero('2025-01-01')─┬─toDate32OrZero('')─┐
│ 2025-01-01 │ 1900-01-01 │
└──────────────────────────────┴────────────────────┘toDateOrDefault
Introduced in: v21.11.0
Like toDate but if unsuccessful, returns a default value which is either the second argument (if specified), or otherwise the lower boundary of Date.
Syntax
toDateOrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Date
Returned value
Value of type Date if successful, otherwise returns the default value if passed or 1970-01-01 if not. Date
Examples
Successful conversion
SELECT toDateOrDefault('2022-12-30')2022-12-30Failed conversion
SELECT toDateOrDefault('', CAST('2023-01-01', 'Date'))2023-01-01toDateOrNull
Introduced in: v1.1.0
Converts an input value to a value of type Date but returns NULL if an invalid argument is received.
The same as toDate but returns NULL if an invalid argument is received.
An integer argument is interpreted the same way as by toDate (a number of days since 1970-01-01 if it does not exceed 65535, a Unix timestamp otherwise), and produces NULL if it is out of range of the Date type.
Syntax
toDateOrNull(x)Arguments
x— A string representation of a date, or an integer number of days or a Unix timestamp.Stringor(U)Int8/16/32/64
Returned value
Returns a Date value if successful, otherwise NULL. Date or NULL
Examples
Usage example
SELECT toDateOrNull('2025-12-30'), toDateOrNull('invalid')┌─toDateOrNull('2025-12-30')─┬─toDateOrNull('invalid')─┐
│ 2025-12-30 │ ᴺᵁᴸᴸ │
└────────────────────────────┴─────────────────────────┘toDateOrZero
Introduced in: v1.1.0
Converts an input value to a value of type Date but returns the lower boundary of Date if an invalid argument is received.
The same as toDate but returns lower boundary of Date if an invalid argument is received.
See also:
Syntax
toDateOrZero(x)Arguments
x— A string representation of a date.String
Returned value
Returns a Date value if successful, otherwise the lower boundary of Date (1970-01-01). Date
Examples
Usage example
SELECT toDateOrZero('2025-12-30'), toDateOrZero('')┌─toDateOrZero('2025-12-30')─┬─toDateOrZero('')─┐
│ 2025-12-30 │ 1970-01-01 │
└────────────────────────────┴──────────────────┘toDateTime
Introduced in: v1.1.0
Converts an input value to type DateTime.
Syntax
toDateTime(expr[, time_zone])Arguments
Returned value
Returns a date time. DateTime
Examples
Usage example
SELECT toDateTime('2025-01-01 00:00:00'), toDateTime(1735689600, 'UTC')
FORMAT VerticalRow 1:
──────
toDateTime('2025-01-01 00:00:00'): 2025-01-01 00:00:00
toDateTime(1735689600, 'UTC'): 2025-01-01 00:00:00toDateTime32
Introduced in: v20.9.0
Converts an input value to type DateTime.
Supports conversion from String, FixedString, Date, Date32, Time, DateTime, DateTime64, or numeric types ((U)Int8, (U)Int16, (U)Int32, (U)Int64, BFloat16, Float32, Float64). Decimal and Time64 values are not supported and result in an exception; the Time type and wide integer types such as (U)Int128/(U)Int256 wrap around instead of saturating.
DateTime32 is an alias of DateTime and supports dates from 1970-01-01 00:00:00 to 2106-02-07 06:28:15.
When converting from a string or from one of the saturating numeric types listed above, values outside of this range are saturated to the range boundaries. Non-finite floating-point values (NaN, inf, -inf) cannot be converted and result in an exception.
Conversions from other date and time types such as Date32 or DateTime64 follow the date_time_overflow_behavior setting: the default ignore mode may produce wrapped-around values, saturate clamps them to the range boundaries, and throw throws an exception.
Syntax
toDateTime32(x[, timezone])Arguments
x— Input value to convert.StringorFixedStringor(U)Int*orFloat*orBFloat16orDateorDate32orTimeorDateTimeorDateTime64timezone— Optional. Timezone for the returnedDateTimevalue.String
Returned value
Returns the converted input value. DateTime
Examples
From a string
SELECT toDateTime32('2025-01-01 00:00:00') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime │
└─────────────────────┴───────────────────┘From a Unix timestamp
SELECT toDateTime32(1735689600, 'UTC') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00 │ DateTime('UTC') │
└─────────────────────┴───────────────────┘With a timezone
SELECT toDateTime32('2025-01-01 00:00:00', 'Asia/Istanbul') AS value, toTypeName(value);┌───────────────value─┬─toTypeName(value)─────────┐
│ 2025-01-01 00:00:00 │ DateTime('Asia/Istanbul') │
└─────────────────────┴───────────────────────────┘toDateTime64
Introduced in: v20.1.0
Converts an input value to a value of type DateTime64.
Syntax
toDateTime64(expr, scale[, timezone])Arguments
expr— Expression returning a number or a string representation of a number.Expressionscale— Tick size (precision): 10^(-scale) seconds.UInt8timezone— Optional. Time zone for the specifiedDateTime64object.String
Returned value
Returns a calendar date and time of day, with sub-second precision. DateTime64
Examples
The value is within the range
SELECT toDateTime64('2025-01-01 00:00:00.000', 3) AS value, toTypeName(value);┌───────────────────value─┬─toTypeName(value)─┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘As decimal with precision
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(value)─┐
│ 2019-01-01 00:00:00.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘
┌───────────────────value─┬─toTypeName(value)─┐
│ 9999-12-31 23:59:59.000 │ DateTime64(3) │
└─────────────────────────┴───────────────────┘With timezone
SELECT toDateTime64('2025-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);┌───────────────────value─┬─toTypeName(value)──────────────┐
│ 2025-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul') │
└─────────────────────────┴────────────────────────────────┘toDateTime64OrDefault
Introduced in: v21.11.0
Like toDateTime64, this function converts an input value to a value of type DateTime64, but returns either the default value of DateTime64 or the provided default if an invalid argument is received.
Syntax
toDateTime64OrDefault(expr, scale[, timezone, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*scale— Tick size (precision): 10^-precision seconds.UInt8timezone— Optional. Time zone.Stringdefault— Optional. The default value to return if parsing is unsuccessful.DateTime64
Returned value
Value of type DateTime64 if successful, otherwise returns the default value if passed or 1970-01-01 00:00:00.000 if not. DateTime64
Examples
Successful conversion
SELECT toDateTime64OrDefault('1976-10-18 00:00:00.30', 3)1976-10-18 00:00:00.300Failed conversion
SELECT toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3))2001-01-01 00:00:00.000toDateTime64OrNull
Introduced in: v20.1.0
Converts an input value to a value of type DateTime64 but returns NULL if an invalid argument is received.
The same as toDateTime64 but returns NULL if an invalid argument is received.
An integer argument is interpreted as a Unix timestamp in whole seconds and produces NULL if it is out of range of the DateTime64 type.
Syntax
toDateTime64OrNull(x[, precision[, timezone]])Arguments
x— A string representation of a date with time and subsecond precision, or an integer Unix timestamp.Stringor(U)Int8/16/32/64precision— Optional. The subsecond precision of the returned value.UInt8timezone— Optional. Time zone of the returned value.String
Returned value
Returns a DateTime64 value if successful, otherwise NULL. DateTime64 or NULL
Examples
Usage example
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
Introduced in: v20.1.0
Converts an input value to a value of type DateTime64 but returns the zero DateTime64 value (the Unix epoch, 1970-01-01 00:00:00) if an invalid argument is received.
The same as toDateTime64 but returns the zero DateTime64 value if an invalid argument is received.
See also:
Syntax
toDateTime64OrZero(x[, precision[, timezone]])Arguments
x— A string representation of a date with time and subsecond precision.Stringprecision— Optional. The subsecond precision of the returned value.UInt8timezone— Optional. Time zone of the returned value.String
Returned value
Returns a DateTime64 value if successful, otherwise the zero DateTime64 value (1970-01-01 00:00:00) at the requested precision. DateTime64
Examples
Usage example
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
Introduced in: v21.11.0
Like toDateTime but if unsuccessful, returns a default value which is either the third argument (if specified), or otherwise the lower boundary of DateTime.
Syntax
toDateTimeOrDefault(expr[, timezone, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*timezone— Optional. Time zone.Stringdefault— Optional. The default value to return if parsing is unsuccessful.DateTime
Returned value
Value of type DateTime if successful, otherwise returns the default value if passed or 1970-01-01 00:00:00 if not. DateTime
Examples
Successful conversion
SELECT toDateTimeOrDefault('2022-12-30 13:44:17')2022-12-30 13:44:17Failed conversion
SELECT toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))2023-01-01 00:00:00toDateTimeOrNull
Introduced in: v1.1.0
Converts an input value to a value of type DateTime but returns NULL if an invalid argument is received.
The same as toDateTime but returns NULL if an invalid argument is received.
An integer argument is interpreted as a Unix timestamp and produces NULL if it is out of range of the DateTime type.
Syntax
toDateTimeOrNull(x[, timezone])Arguments
x— A string representation of a date with time, or an integer Unix timestamp.Stringor(U)Int8/16/32/64timezone— Optional. Time zone of the returned value.String
Returned value
Returns a DateTime value if successful, otherwise NULL. DateTime or NULL
Examples
Usage example
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 │ ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴─────────────────────────────┘Integer argument with a time zone
SELECT toDateTimeOrNull(1583851242, 'Asia/Shanghai'), toDateTimeOrNull(4294967296)┌─toDateTimeOrNull(1583851242, 'Asia/Shanghai')─┬─toDateTimeOrNull(4294967296)─┐
│ 2020-03-10 22:40:42 │ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────┴──────────────────────────────┘toDateTimeOrZero
Introduced in: v1.1.0
Converts an input value to a value of type DateTime but returns the lower boundary of DateTime if an invalid argument is received. The same as toDateTime but returns lower boundary of DateTime if an invalid argument is received.
Syntax
toDateTimeOrZero(x)Arguments
x— A string representation of a date with time.String
Returned value
Returns a DateTime value if successful, otherwise the lower boundary of DateTime (1970-01-01 00:00:00). DateTime
Examples
Usage example
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
Introduced in: v18.12.0
Converts an input value to a value of type Decimal(38, S) with scale of S.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments:
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values, e.g.
SELECT toDecimal128('0xc0fe', 1);.
Syntax
toDecimal128(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 38, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a value of type Decimal(38, S) Decimal128(S)
Examples
Usage example
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 VerticalRow 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
Introduced in: v21.11.0
Like toDecimal128, this function converts an input value to a value of type Decimal(38, S) but returns the default value in case of an error.
Syntax
toDecimal128OrDefault(expr, S[, default])Arguments
expr— A String representation of a number.StringS— Scale parameter between 0 and 38, specifying how many digits the fractional part of a number can have.UInt8default— Optional. The default value to return if parsing to type Decimal128(S) is unsuccessful.Decimal128(S)
Returned value
Value of type Decimal(38, S) if successful, otherwise returns the default value if passed or 0 if not. Decimal128(S)
Examples
Successful conversion
SELECT toDecimal128OrDefault(toString(1/42), 18)0.023809523809523808Failed conversion
SELECT toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)'))-1toDecimal128OrNull
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(38, S) but returns NULL in case of an error.
Like toDecimal128 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return NULL):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
- Values that exceed the bounds of
Decimal128:(-1*10^(38 - S), 1*10^(38 - S)).
See also:
Syntax
toDecimal128OrNull(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 38, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(38, S) value if successful, otherwise NULL. Decimal128(S) or NULL
Examples
Usage example
SELECT toDecimal128OrNull('42.7', 2), toDecimal128OrNull('invalid', 2)┌─toDecimal128OrNull('42.7', 2)─┬─toDecimal128OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘toDecimal128OrZero
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(38, S) but returns 0 in case of an error.
Like toDecimal128 but returns 0 instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return 0):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
Syntax
toDecimal128OrZero(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 38, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(38, S) value if successful, otherwise 0. Decimal128(S)
Examples
Basic usage
SELECT toDecimal128OrZero('42.7', 2), toDecimal128OrZero('invalid', 2)┌─toDecimal128OrZero('42.7', 2)─┬─toDecimal128OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└───────────────────────────────┴──────────────────────────────────┘toDecimal256
Introduced in: v20.8.0
Converts an input value to a value of type Decimal(76, S) with scale of S. Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments:
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values, e.g.
SELECT toDecimal256('0xc0fe', 1);.
Syntax
toDecimal256(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 76, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a value of type Decimal(76, S). Decimal256(S)
Examples
Usage example
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 VerticalRow 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
Introduced in: v21.11.0
Like toDecimal256, this function converts an input value to a value of type Decimal(76, S) but returns the default value in case of an error.
Syntax
toDecimal256OrDefault(expr, S[, default])Arguments
expr— A String representation of a number.StringS— Scale parameter between 0 and 76, specifying how many digits the fractional part of a number can have.UInt8default— Optional. The default value to return if parsing to type Decimal256(S) is unsuccessful.Decimal256(S)
Returned value
Value of type Decimal(76, S) if successful, otherwise returns the default value if passed or 0 if not. Decimal256(S)
Examples
Successful conversion
SELECT toDecimal256OrDefault(toString(1/42), 76)0.023809523809523808Failed conversion
SELECT toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)'))-1toDecimal256OrNull
Introduced in: v20.8.0
Converts an input value to a value of type Decimal(76, S) but returns NULL in case of an error.
Like toDecimal256 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return NULL):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
- Values that exceed the bounds of
Decimal256:(-1 * 10^(76 - S), 1 * 10^(76 - S)).
See also:
Syntax
toDecimal256OrNull(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 76, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(76, S) value if successful, otherwise NULL. Decimal256(S) or NULL
Examples
Usage example
SELECT toDecimal256OrNull('42.7', 2), toDecimal256OrNull('invalid', 2)┌─toDecimal256OrNull('42.7', 2)─┬─toDecimal256OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└───────────────────────────────┴──────────────────────────────────┘toDecimal256OrZero
Introduced in: v20.8.0
Converts an input value to a value of type Decimal(76, S) but returns 0 in case of an error.
Like toDecimal256 but returns 0 instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return 0):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
See also:
Syntax
toDecimal256OrZero(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 76, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(76, S) value if successful, otherwise 0. Decimal256(S)
Examples
Usage example
SELECT toDecimal256OrZero('42.7', 2), toDecimal256OrZero('invalid', 2)┌─toDecimal256OrZero('42.7', 2)─┬─toDecimal256OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└───────────────────────────────┴──────────────────────────────────┘toDecimal32
Introduced in: v18.12.0
Converts an input value to a value of type Decimal(9, S) with scale of S. Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments:
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values, e.g.
SELECT toDecimal32('0xc0fe', 1);.
Syntax
toDecimal32(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 9, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a value of type Decimal(9, S) Decimal32(S)
Examples
Usage example
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 VerticalRow 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
Introduced in: v21.11.0
Like toDecimal32, this function converts an input value to a value of type Decimal(9, S) but returns the default value in case of an error.
Syntax
toDecimal32OrDefault(expr, S[, default])Arguments
expr— A String representation of a number.StringS— Scale parameter between 0 and 9, specifying how many digits the fractional part of a number can have.UInt8default— Optional. The default value to return if parsing to type Decimal32(S) is unsuccessful.Decimal32(S)
Returned value
Value of type Decimal(9, S) if successful, otherwise returns the default value if passed or 0 if not. Decimal32(S)
Examples
Successful conversion
SELECT toDecimal32OrDefault(toString(0.0001), 5)0.0001Failed conversion
SELECT toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)'))-1toDecimal32OrNull
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(9, S) but returns NULL in case of an error.
Like toDecimal32 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return NULL):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
- Values that exceed the bounds of
Decimal32:(-1*10^(9 - S), 1*10^(9 - S)).
See also:
Syntax
toDecimal32OrNull(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 9, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(9, S) value if successful, otherwise NULL. Decimal32(S) or NULL
Examples
Usage example
SELECT toDecimal32OrNull('42.7', 2), toDecimal32OrNull('invalid', 2)┌─toDecimal32OrNull('42.7', 2)─┬─toDecimal32OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘toDecimal32OrZero
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(9, S) but returns 0 in case of an error.
Like toDecimal32 but returns 0 instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return 0):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
Syntax
toDecimal32OrZero(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 9, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(9, S) value if successful, otherwise 0. Decimal32(S)
Examples
Usage example
SELECT toDecimal32OrZero('42.7', 2), toDecimal32OrZero('invalid', 2)┌─toDecimal32OrZero('42.7', 2)─┬─toDecimal32OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└──────────────────────────────┴─────────────────────────────────┘toDecimal64
Introduced in: v18.12.0
Converts an input value to a value of type Decimal(18, S) with scale of S.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments:
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values, e.g.
SELECT toDecimal64('0xc0fe', 1);.
Syntax
toDecimal64(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 18, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a decimal value. Decimal(18, S)
Examples
Usage example
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 VerticalRow 1:
──────
a: 2
type_a: Decimal(18, 1)
b: 4.2
type_b: Decimal(18, 2)
c: 4.2
type_c: Decimal(18, 3)toDecimal64OrDefault
Introduced in: v21.11.0
Like toDecimal64, this function converts an input value to a value of type Decimal(18, S) but returns the default value in case of an error.
Syntax
toDecimal64OrDefault(expr, S[, default])Arguments
expr— A String representation of a number.StringS— Scale parameter between 0 and 18, specifying how many digits the fractional part of a number can have.UInt8default— Optional. The default value to return if parsing to type Decimal64(S) is unsuccessful.Decimal64(S)
Returned value
Value of type Decimal(18, S) if successful, otherwise returns the default value if passed or 0 if not. Decimal64(S)
Examples
Successful conversion
SELECT toDecimal64OrDefault(toString(0.0001), 18)0.0001Failed conversion
SELECT toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)'))-1toDecimal64OrNull
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(18, S) but returns NULL in case of an error.
Like toDecimal64 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return NULL):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
- Values that exceed the bounds of
Decimal64:(-1*10^(18 - S), 1*10^(18 - S)).
See also:
Syntax
toDecimal64OrNull(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 18, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(18, S) value if successful, otherwise NULL. Decimal64(S) or NULL
Examples
Usage example
SELECT toDecimal64OrNull('42.7', 2), toDecimal64OrNull('invalid', 2)┌─toDecimal64OrNull('42.7', 2)─┬─toDecimal64OrNull('invalid', 2)─┐
│ 42.7 │ ᴺᵁᴸᴸ │
└──────────────────────────────┴─────────────────────────────────┘toDecimal64OrZero
Introduced in: v20.1.0
Converts an input value to a value of type Decimal(18, S) but returns 0 in case of an error.
Like toDecimal64 but returns 0 instead of throwing an exception on conversion errors.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values or string representations of type Float*.
Unsupported arguments (return 0):
- Values or string representations of Float* values
NaNandInf(case-insensitive). - String representations of binary and hexadecimal values.
See also:
Syntax
toDecimal64OrZero(expr, S)Arguments
expr— Expression returning a number or a string representation of a number.ExpressionS— Scale parameter between 0 and 18, specifying how many digits the fractional part of a number can have.UInt8
Returned value
Returns a Decimal(18, S) value if successful, otherwise 0. Decimal64(S)
Examples
Usage example
SELECT toDecimal64OrZero('42.7', 2), toDecimal64OrZero('invalid', 2)┌─toDecimal64OrZero('42.7', 2)─┬─toDecimal64OrZero('invalid', 2)─┐
│ 42.7 │ 0 │
└──────────────────────────────┴─────────────────────────────────┘toDecimalString
Introduced in: v23.3.0
Converts a numeric value to a String with specified number of fractional digits.
The function rounds the input value to the specified number of decimal places. If the input value has fewer fractional digits than requested, the result is padded with zeros to achieve the exact number of fractional digits specified.
Syntax
toDecimalString(number, scale)Arguments
number— The numeric value to convert to a string. Can be any numeric type (Int, UInt, Float, Decimal).Int8orInt16orInt32orInt64orUInt8orUInt16orUInt32orUInt64orFloat32orFloat64orDecimalscale— The number of digits to display in the fractional part. The result will be rounded if necessary.UInt8
Returned value
Returns a String representation of the number with exactly the specified number of fractional digits. String
Examples
Round and format a number
SELECT toDecimalString(2.1456, 2)┌─toDecimalString(2.1456, 2)─┐
│ 2.15 │
└────────────────────────────┘Pad with zeros
SELECT toDecimalString(5, 3)┌─toDecimalString(5, 3)─┐
│ 5.000 │
└───────────────────────┘Different numeric types
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
Introduced in: v1.1.0
Converts a String argument to a FixedString(N) type (a string of fixed length N).
If the string has fewer bytes than N, it is padded with null bytes to the right. If the string has more bytes than N, an exception is thrown.
Syntax
toFixedString(s, N)Arguments
s— String to convert.StringN— Length of the resulting FixedString.const UInt*
Returned value
Returns a FixedString of length N. FixedString(N)
Examples
Usage example
-- The padding is made of null bytes, so the result is shown with `hex`.
SELECT hex(toFixedString('foo', 8)) AS s;┌─s────────────────┐
│ 666F6F0000000000 │
└──────────────────┘toFloat32
Introduced in: v1.1.0
Converts an input value to a value of type Float32. Throws an exception in case of an error.
Supported arguments:
- Values of type (U)Int*.
- String representations of (U)Int8/16/32/128/256.
- Values of type Float*, including
NaNandInf. - String representations of Float*, including
NaNandInf(case-insensitive).
Unsupported arguments:
- String representations of binary and hexadecimal values, e.g.
SELECT toFloat32('0xc0fe');.
See also:
Syntax
toFloat32(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 32-bit floating point value. Float32
Examples
Usage example
SELECT
toFloat32(42.7),
toFloat32('42.7'),
toFloat32('NaN')
FORMAT VerticalRow 1:
──────
toFloat32(42.7): 42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'): nantoFloat32OrDefault
Introduced in: v21.11.0
Like toFloat32, this function converts an input value to a value of type Float32 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toFloat32OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Float32
Returned value
Returns a value of type Float32 if successful, otherwise returns the default value if passed or 0 if not. Float32
Examples
Successful conversion
SELECT toFloat32OrDefault('8', CAST('0', 'Float32'))8Failed conversion
SELECT toFloat32OrDefault('abc', CAST('0', 'Float32'))0toFloat32OrNull
Introduced in: v1.1.0
Converts an input value to a value of type Float32 but returns NULL in case of an error.
Like toFloat32 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values of type (U)Int*.
- String representations of (U)Int8/16/32/128/256.
- Values of type Float*, including
NaNandInf. - String representations of Float*, including
NaNandInf(case-insensitive).
Unsupported arguments (return NULL):
- String representations of binary and hexadecimal values, e.g.
SELECT toFloat32OrNull('0xc0fe');. - Invalid string formats.
See also:
Syntax
toFloat32OrNull(x)Arguments
x— A string representation of a number.String
Returned value
Returns a 32-bit Float value if successful, otherwise NULL. Float32 or NULL
Examples
Usage example
SELECT
toFloat32OrNull('42.7'),
toFloat32OrNull('NaN'),
toFloat32OrNull('abc')
FORMAT VerticalRow 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('NaN'): nan
toFloat32OrNull('abc'): ᴺᵁᴸᴸtoFloat32OrZero
Introduced in: v1.1.0
Converts an input value to a value of type Float32 but returns 0 in case of an error.
Like toFloat32 but returns 0 instead of throwing an exception on conversion errors.
See also:
Syntax
toFloat32OrZero(x)Arguments
x— A string representation of a number.String
Returned value
Returns a 32-bit Float value if successful, otherwise 0. Float32
Examples
Usage example
SELECT
toFloat32OrZero('42.7'),
toFloat32OrZero('abc')
FORMAT VerticalRow 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'): 0toFloat64
Introduced in: v1.1.0
Converts an input value to a value of type Float64.
Throws an exception in case of an error.
Supported arguments:
- Values of type (U)Int*.
- String representations of (U)Int8/16/32/128/256.
- Values of type Float*, including
NaNandInf. - String representations of type Float*, including
NaNandInf(case-insensitive).
Unsupported arguments:
- String representations of binary and hexadecimal values, e.g.
SELECT toFloat64('0xc0fe');.
See also:
Syntax
toFloat64(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 64-bit floating point value. Float64
Examples
Usage example
SELECT
toFloat64(42.7),
toFloat64('42.7'),
toFloat64('NaN')
FORMAT VerticalRow 1:
──────
toFloat64(42.7): 42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'): nantoFloat64OrDefault
Introduced in: v21.11.0
Like toFloat64, this function converts an input value to a value of type Float64 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toFloat64OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Float64
Returned value
Returns a value of type Float64 if successful, otherwise returns the default value if passed or 0 if not. Float64
Examples
Successful conversion
SELECT toFloat64OrDefault('8', CAST('0', 'Float64'))8Failed conversion
SELECT toFloat64OrDefault('abc', CAST('0', 'Float64'))0toFloat64OrNull
Introduced in: v1.1.0
Converts an input value to a value of type Float64 but returns NULL in case of an error.
Like toFloat64 but returns NULL instead of throwing an exception on conversion errors.
Supported arguments:
- Values of type (U)Int*.
- String representations of (U)Int8/16/32/128/256.
- Values of type Float*, including
NaNandInf. - String representations of type Float*, including
NaNandInf(case-insensitive).
Unsupported arguments (return NULL):
- String representations of binary and hexadecimal values, e.g.
SELECT toFloat64OrNull('0xc0fe');. - Invalid string formats.
See also:
Syntax
toFloat64OrNull(x)Arguments
x— A string representation of a number.String
Returned value
Returns a 64-bit Float value if successful, otherwise NULL. Float64 or NULL
Examples
Usage example
SELECT
toFloat64OrNull('42.7'),
toFloat64OrNull('NaN'),
toFloat64OrNull('abc')
FORMAT VerticalRow 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('NaN'): nan
toFloat64OrNull('abc'): ᴺᵁᴸᴸtoFloat64OrZero
Introduced in: v1.1.0
Converts an input value to a value of type Float64 but returns 0 in case of an error.
Like toFloat64 but returns 0 instead of throwing an exception on conversion errors.
See also:
Syntax
toFloat64OrZero(x)Arguments
x— A string representation of a number.String
Returned value
Returns a 64-bit Float value if successful, otherwise 0. Float64
Examples
Usage example
SELECT
toFloat64OrZero('42.7'),
toFloat64OrZero('abc')
FORMAT VerticalRow 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'): 0toInt128
Introduced in: v1.1.0
Converts an input value to a value of type Int128. Throws an exception in case of an error. The function uses rounding towards zero, meaning it truncates fractional digits of numbers.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt128('0xc0fe');.
See also:
Syntax
toInt128(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 128-bit integer value. Int128
Examples
Usage example
SELECT
toInt128(-128),
toInt128(-128.8),
toInt128('-128')
FORMAT VerticalRow 1:
──────
toInt128(-128): -128
toInt128(-128.8): -128
toInt128('-128'): -128toInt128OrDefault
Introduced in: v21.11.0
Like toInt128, this function converts an input value to a value of type Int128 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt128OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int128
Returned value
Returns a value of type Int128 if successful, otherwise returns the default value if passed, or 0 if not. Int128
Examples
Successful conversion
SELECT toInt128OrDefault('-128', CAST('-1', 'Int128'))-128Failed conversion
SELECT toInt128OrDefault('abc', CAST('-1', 'Int128'))-1toInt128OrNull
Introduced in: v20.8.0
Like toInt128, this function converts an input value to a value of type Int128 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt128OrNull('0xc0fe');.
See also:
Syntax
toInt128OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int128, otherwise NULL if the conversion is unsuccessful. Int128 or NULL
Examples
Usage example
SELECT
toInt128OrNull('-128'),
toInt128OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'): ᴺᵁᴸᴸtoInt128OrZero
Introduced in: v20.8.0
Converts an input value to type Int128 but returns 0 in case of an error.
Like toInt128 but returns 0 instead of throwing an exception.
See also:
Syntax
toInt128OrZero(x)Arguments
x— Input value to convert.StringorFixedStringorFloat*orDecimalor(U)Int*orDateorDateTime
Returned value
Returns the converted input value, otherwise 0 if conversion fails. Int128
Examples
Usage example
SELECT toInt128OrZero('123')123Failed conversion returns zero
SELECT toInt128OrZero('abc')0toInt16
Introduced in: v1.1.0
Converts an input value to a value of type Int16.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt16('0xc0fe');.
See also:
Syntax
toInt16(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 16-bit integer value. Int16
Examples
Usage example
SELECT
toInt16(-16),
toInt16(-16.16),
toInt16('-16')
FORMAT VerticalRow 1:
──────
toInt16(-16): -16
toInt16(-16.16): -16
toInt16('-16'): -16toInt16OrDefault
Introduced in: v21.11.0
Like toInt16, this function converts an input value to a value of type Int16 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt16OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int16
Returned value
Returns a value of type Int16 if successful, otherwise returns the default value if passed, or 0 if not. Int16
Examples
Successful conversion
SELECT toInt16OrDefault('-16', CAST('-1', 'Int16'))-16Failed conversion
SELECT toInt16OrDefault('abc', CAST('-1', 'Int16'))-1toInt16OrNull
Introduced in: v1.1.0
Like toInt16, this function converts an input value to a value of type Int16 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt16OrNull('0xc0fe');.
See also:
Syntax
toInt16OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int16, otherwise NULL if the conversion is unsuccessful. Int16 or NULL
Examples
Usage example
SELECT
toInt16OrNull('-16'),
toInt16OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): ᴺᵁᴸᴸtoInt16OrZero
Introduced in: v1.1.0
Like toInt16, this function converts an input value to a value of type Int16 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt16OrZero('0xc0fe');.
See also:
Syntax
toInt16OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int16, otherwise 0 if the conversion is unsuccessful. Int16
Examples
Usage example
SELECT
toInt16OrZero('16'),
toInt16OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt16OrZero('16'): 16
toInt16OrZero('abc'): 0toInt256
Introduced in: v1.1.0
Converts an input value to a value of type Int256. Throws an exception in case of an error. The function uses rounding towards zero, meaning it truncates fractional digits of numbers.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt256('0xc0fe');.
See also:
Syntax
toInt256(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 256-bit integer value. Int256
Examples
Usage example
SELECT
toInt256(-256),
toInt256(-256.256),
toInt256('-256')
FORMAT VerticalRow 1:
──────
toInt256(-256): -256
toInt256(-256.256): -256
toInt256('-256'): -256toInt256OrDefault
Introduced in: v21.11.0
Like toInt256, this function converts an input value to a value of type Int256 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt256OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int256
Returned value
Returns a value of type Int256 if successful, otherwise returns the default value if passed, or 0 if not. Int256
Examples
Successful conversion
SELECT toInt256OrDefault('-256', CAST('-1', 'Int256'))-256Failed conversion
SELECT toInt256OrDefault('abc', CAST('-1', 'Int256'))-1toInt256OrNull
Introduced in: v20.8.0
Like toInt256, this function converts an input value to a value of type Int256 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt256OrNull('0xc0fe');.
See also:
Syntax
toInt256OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int256, otherwise NULL if the conversion is unsuccessful. Int256 or NULL
Examples
Usage example
SELECT
toInt256OrNull('-256'),
toInt256OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'): ᴺᵁᴸᴸtoInt256OrZero
Introduced in: v20.8.0
Converts an input value to type Int256 but returns 0 in case of an error.
Like toInt256 but returns 0 instead of throwing an exception.
See also:
Syntax
toInt256OrZero(x)Arguments
x— Input value to convert.StringorFixedStringorFloat*orDecimalor(U)Int*orDateorDateTime
Returned value
Returns the converted input value, otherwise 0 if conversion fails. Int256
Examples
Usage example
SELECT toInt256OrZero('123')123Failed conversion returns zero
SELECT toInt256OrZero('abc')0toInt32
Introduced in: v1.1.0
Converts an input value to a value of type Int32.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt32('0xc0fe');.
See also:
Syntax
toInt32(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 32-bit integer value. Int32
Examples
Usage example
SELECT
toInt32(-32),
toInt32(-32.32),
toInt32('-32')
FORMAT VerticalRow 1:
──────
toInt32(-32): -32
toInt32(-32.32): -32
toInt32('-32'): -32toInt32OrDefault
Introduced in: v21.11.0
Like toInt32, this function converts an input value to a value of type Int32 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt32OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int32
Returned value
Returns a value of type Int32 if successful, otherwise returns the default value if passed or 0 if not. Int32
Examples
Successful conversion
SELECT toInt32OrDefault('-32', CAST('-1', 'Int32'))-32Failed conversion
SELECT toInt32OrDefault('abc', CAST('-1', 'Int32'))-1toInt32OrNull
Introduced in: v1.1.0
Like toInt32, this function converts an input value to a value of type Int32 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt32OrNull('0xc0fe');.
See also:
Syntax
toInt32OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int32, otherwise NULL if the conversion is unsuccessful. Int32 or NULL
Examples
Usage example
SELECT
toInt32OrNull('-32'),
toInt32OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): ᴺᵁᴸᴸtoInt32OrZero
Introduced in: v1.1.0
Like toInt32, this function converts an input value to a value of type Int32 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt32OrZero('0xc0fe');.
See also:
Syntax
toInt32OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int32, otherwise 0 if the conversion is unsuccessful. Int32
Examples
Usage example
SELECT
toInt32OrZero('32'),
toInt32OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt32OrZero('32'): 32
toInt32OrZero('abc'): 0toInt64
Introduced in: v1.1.0
Converts an input value to a value of type Int64.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt64('0xc0fe');.
See also:
Syntax
toInt64(expr)Arguments
expr— Expression returning a number or a string representation of a number. Supported: values or string representations of type (U)Int*, values of type Float*. Unsupported: string representations of Float* values including NaN and Inf, string representations of binary and hexadecimal values.Expression
Returned value
Returns a 64-bit integer value. Int64
Examples
Usage example
SELECT
toInt64(-64),
toInt64(-64.64),
toInt64('-64')
FORMAT VerticalRow 1:
──────
toInt64(-64): -64
toInt64(-64.64): -64
toInt64('-64'): -64toInt64OrDefault
Introduced in: v21.11.0
Like toInt64, this function converts an input value to a value of type Int64 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt64OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int64
Returned value
Returns a value of type Int64 if successful, otherwise returns the default value if passed, or 0 if not. Int64
Examples
Successful conversion
SELECT toInt64OrDefault('-64', CAST('-1', 'Int64'))-64Failed conversion
SELECT toInt64OrDefault('abc', CAST('-1', 'Int64'))-1toInt64OrNull
Introduced in: v1.1.0
Like toInt64, this function converts an input value to a value of type Int64 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt64OrNull('0xc0fe');.
See also:
Syntax
toInt64OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int64, otherwise NULL if the conversion is unsuccessful. Int64 or NULL
Examples
Usage example
SELECT
toInt64OrNull('-64'),
toInt64OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): ᴺᵁᴸᴸtoInt64OrZero
Introduced in: v1.1.0
Converts an input value to type Int64 but returns 0 in case of an error.
Like toInt64 but returns 0 instead of throwing an exception.
See also:
Syntax
toInt64OrZero(x)Arguments
x— Input value to convert.StringorFixedStringorFloat*orDecimalor(U)Int*orDateorDateTime
Returned value
Returns the converted input value, otherwise 0 if conversion fails. Int64
Examples
Usage example
SELECT toInt64OrZero('123')123Failed conversion returns zero
SELECT toInt64OrZero('abc')0toInt8
Introduced in: v1.1.0
Converts an input value to a value of type Int8.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt8('0xc0fe');.
See also:
Syntax
toInt8(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns an 8-bit integer value. Int8
Examples
Usage example
SELECT
toInt8(-8),
toInt8(-8.8),
toInt8('-8')
FORMAT VerticalRow 1:
──────
toInt8(-8): -8
toInt8(-8.8): -8
toInt8('-8'): -8toInt8OrDefault
Introduced in: v21.11.0
Like toInt8, this function converts an input value to a value of type Int8 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toInt8OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.Int8
Returned value
Returns a value of type Int8 if successful, otherwise returns the default value if passed, or 0 if not. Int8
Examples
Successful conversion
SELECT toInt8OrDefault('-8', CAST('-1', 'Int8'))-8Failed conversion
SELECT toInt8OrDefault('abc', CAST('-1', 'Int8'))-1toInt8OrNull
Introduced in: v1.1.0
Like toInt8, this function converts an input value to a value of type Int8 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt8OrNull('0xc0fe');.
See also:
Syntax
toInt8OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int8, otherwise NULL if the conversion is unsuccessful. Int8 or NULL
Examples
Usage example
SELECT
toInt8OrNull('-8'),
toInt8OrNull('abc')
FORMAT VerticalRow 1:
──────
toInt8OrNull('-8'): -8
toInt8OrNull('abc'): ᴺᵁᴸᴸtoInt8OrZero
Introduced in: v1.1.0
Like toInt8, this function converts an input value to a value of type Int8 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toInt8OrZero('0xc0fe');.
See also:
Syntax
toInt8OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type Int8, otherwise 0 if the conversion is unsuccessful. Int8
Examples
Usage example
SELECT
toInt8OrZero('8'),
toInt8OrZero('abc')
FORMAT VerticalRow 1:
──────
toInt8OrZero('8'): 8
toInt8OrZero('abc'): 0toInterval
Introduced in: v25.4.0
Creates an Interval value from a numeric value and a unit string.
This function provides a unified way to create intervals of different types (seconds, minutes, hours, days, weeks, months, quarters, years) from a single function by specifying the unit as a string argument. The unit string is case-insensitive.
This is equivalent to calling type-specific functions like toIntervalSecond, toIntervalMinute, toIntervalDay, etc.,
but allows the unit to be specified dynamically as a string parameter.
Syntax
toInterval(value, unit)Arguments
value— The numeric value representing the number of units. Can be any numeric type.Int8orInt16orInt32orInt64orUInt8orUInt16orUInt32orUInt64orFloat32orFloat64unit— The unit of time. Must be a constant string. Valid values: ‘nanosecond’, ‘microsecond’, ‘millisecond’, ‘second’, ‘minute’, ‘hour’, ‘day’, ‘week’, ‘month’, ‘quarter’, ‘year’.String
Returned value
Returns an Interval value of the specified type. The result type depends on the unit: IntervalNanosecond, IntervalMicrosecond, IntervalMillisecond, IntervalSecond, IntervalMinute, IntervalHour, IntervalDay, IntervalWeek, IntervalMonth, IntervalQuarter, or IntervalYear. Interval
Examples
Create intervals with different units
SELECT
toInterval(5, 'second') AS seconds,
toInterval(3, 'day') AS days,
toInterval(2, 'month') AS months┌─seconds─┬─days─┬─months─┐
│ 5 │ 3 │ 2 │
└─────────┴──────┴────────┘Use intervals in date arithmetic
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 │
└──────────────────────┴─────────────────────┴─────────────────────┘Dynamic interval creation
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
Introduced in: v1.1.0
Returns an interval of n days of data type IntervalDay.
Syntax
toIntervalDay(n)Arguments
n— Number of days. Integer numbers or string representations thereof, and float numbers.(U)Int*orFloat*orString
Returned value
Returns an interval of n days. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n hours of data type IntervalHour.
Syntax
toIntervalHour(n)Arguments
n— Number of hours. Integer numbers or string representations thereof, and float numbers.Int*orUInt*orFloat*orString
Returned value
Returns an interval of n hours. Interval
Examples
Usage example
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
Introduced in: v22.6.0
Returns an interval of n microseconds of data type IntervalMicrosecond.
Syntax
toIntervalMicrosecond(n)Arguments
Returned value
Returns an interval of n microseconds. Interval
Examples
Usage example
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
Introduced in: v22.6.0
Returns an interval of n milliseconds of data type IntervalMillisecond.
Syntax
toIntervalMillisecond(n)Arguments
Returned value
Returns an interval of n milliseconds. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n minutes of data type IntervalMinute.
Syntax
toIntervalMinute(n)Arguments
n— Number of minutes. Integer numbers or string representations thereof, and float numbers.(U)Int*orFloat*orString
Returned value
Returns an interval of n minutes. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n months of data type IntervalMonth.
Syntax
toIntervalMonth(n)Arguments
Returned value
Returns an interval of n months. Interval
Examples
Usage example
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
Introduced in: v22.6.0
Returns an interval of n nanoseconds of data type IntervalNanosecond.
Syntax
toIntervalNanosecond(n)Arguments
Returned value
Returns an interval of n nanoseconds. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n quarters of data type IntervalQuarter.
Syntax
toIntervalQuarter(n)Arguments
Returned value
Returns an interval of n quarters. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n seconds of data type IntervalSecond.
Syntax
toIntervalSecond(n)Arguments
n— Number of seconds. Integer numbers or string representations thereof, and float numbers.(U)Int*orFloat*orString
Returned value
Returns an interval of n seconds. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n weeks of data type IntervalWeek.
Syntax
toIntervalWeek(n)Arguments
Returned value
Returns an interval of n weeks. Interval
Examples
Usage example
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
Introduced in: v1.1.0
Returns an interval of n years of data type IntervalYear.
Syntax
toIntervalYear(n)Arguments
Returned value
Returns an interval of n years. Interval
Examples
Usage example
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
Introduced in: v18.12.0
Converts the input argument to the LowCardinality version of same data type.
Syntax
toLowCardinality(expr)Arguments
expr— Expression resulting in one of the supported data types.StringorFixedStringorDateorDateTimeor(U)Int*orFloat*
Returned value
Returns the input value converted to the LowCardinality data type. LowCardinality
Examples
Usage example
SELECT toLowCardinality('1')┌─toLowCardinality('1')─┐
│ 1 │
└───────────────────────┘toString
Introduced in: v1.1.0
Converts values to their string representation. For DateTime arguments, the function can take a second String argument containing the name of the time zone.
Syntax
toString(value[, timezone])Arguments
value— Value to convert to string.Anytimezone— Optional. Timezone name for DateTime conversion.String
Returned value
Returns a string representation of the input value. String
Examples
Usage example
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
Introduced in: v1.1.0
Accepts a String or FixedString argument and returns a String that contains a copy of the original string truncated at the first null byte.
Null bytes (\0) are considered as string terminators. This function is useful for processing C-style strings or binary data where null bytes mark the end of meaningful content.
Syntax
toStringCutToZero(s)Arguments
s— String or FixedString to process.StringorFixedString
Returned value
Returns a String containing the characters before the first null byte. String
Examples
Usage example
SELECT
toStringCutToZero('hello'),
toStringCutToZero('hello\0world')┌─toStringCutToZero('hello')─┬─toStringCutToZero('hello\0world')─┐
│ hello │ hello │
└────────────────────────────┴───────────────────────────────────┘toTime
Introduced in: v25.5.0
Converts an input value to type Time.
Supports conversion from String, FixedString, DateTime, DateTime64, or numeric types representing seconds since midnight.
Numeric values outside of the range of the type (-999:59:59 to 999:59:59, that is -3599999 to 3599999 seconds) are saturated to the range boundaries, and non-finite floating-point values (NaN, inf, -inf) cannot be converted and result in an exception.
Syntax
toTime(x)Arguments
x— Input value to convert.StringorFixedStringorDateTimeorDateTime64or(U)Int*orBFloat16orFloat*
Returned value
Returns the converted value. Time
Examples
DateTime64 to Time conversion
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime64('2025-04-15 14:30:25.123', 3))14:30:25DateTime to Time conversion
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime('2025-04-15 14:30:25'))14:30:25Integer (seconds since epoch) to Time conversion
SET enable_time_time64_type = 1;
SET use_legacy_to_time = 0;
SELECT toTime(toDateTime(52225, 'UTC'))14:30:25toTime64
Introduced in: v25.6.0
Converts an input value to type Time64.
Supports conversion from String, FixedString, DateTime64, or numeric types representing seconds since midnight.
Provides sub-second precision for time values, up to scale fractional digits.
Syntax
toTime64(x, scale)Arguments
x— Input value to convert.StringorFixedStringorDateTime64or(U)Int*orFloat*scale— Precision (number of fractional digits,0–9) of the resultingTime64.(U)Int*
Returned value
Returns the converted value with the requested scale. Time64
Examples
String to Time64 conversion
SET enable_time_time64_type = 1;
SELECT toTime64('14:30:25.123456', 6)14:30:25.123456DateTime64 to Time64 conversion
SET enable_time_time64_type = 1;
SELECT toTime64(toDateTime64('2025-04-15 14:30:25.123456', 6), 6)14:30:25.123456Float (seconds since midnight) to Time64 conversion
SET enable_time_time64_type = 1;
SELECT toTime64(52225.123456, 6)14:30:25.123456toTime64OrNull
Introduced in: v25.6.0
Converts an input value to a value of type Time64 but returns NULL in case of an error.
Like toTime64 but returns NULL instead of throwing an exception on conversion errors.
See also:
Syntax
toTime64OrNull(x[, precision])Arguments
x— A string representation of a time with subsecond precision.Stringprecision— Optional. The subsecond precision of the returned value.UInt8
Returned value
Returns a Time64 value if successful, otherwise NULL. Time64 or NULL
Examples
Usage example
SELECT toTime64OrNull('12:30:45.123'), toTime64OrNull('invalid')┌─toTime64OrNull('12:30:45.123')─┬─toTime64OrNull('invalid')─┐
│ 12:30:45.123 │ ᴺᵁᴸᴸ │
└────────────────────────────────┴───────────────────────────┘toTime64OrZero
Introduced in: v25.6.0
Converts an input value to a value of type Time64 but returns the zero Time64 value (00:00:00) if an invalid argument is received.
The same as toTime64 but returns the zero Time64 value if an invalid argument is received.
See also:
Syntax
toTime64OrZero(x[, precision])Arguments
x— A string representation of a time with subsecond precision.Stringprecision— Optional. The subsecond precision of the returned value.UInt8
Returned value
Returns a Time64 value if successful, otherwise the zero Time64 value (00:00:00) at the requested precision. Time64
Examples
Usage example
SELECT toTime64OrZero('12:30:45.123'), toTime64OrZero('invalid')┌─toTime64OrZero('12:30:45.123')─┬─toTime64OrZero('invalid')─┐
│ 12:30:45.123 │ 00:00:00.000 │
└────────────────────────────────┴───────────────────────────┘toTimeOrNull
Introduced in: v25.5.0
Converts an input value to a value of type Time but returns NULL in case of an error.
Like toTime but returns NULL instead of throwing an exception on conversion errors.
See also:
Syntax
toTimeOrNull(x)Arguments
x— A string representation of a time.String
Returned value
Returns a Time value if successful, otherwise NULL. Time or NULL
Examples
Usage example
SELECT toTimeOrNull('12:30:45'), toTimeOrNull('invalid')┌─toTimeOrNull('12:30:45')─┬─toTimeOrNull('invalid')─┐
│ 12:30:45 │ ᴺᵁᴸᴸ │
└──────────────────────────┴─────────────────────────┘toTimeOrZero
Introduced in: v25.5.0
Converts an input value to a value of type Time but returns 00:00:00 in case of an error.
Like toTime but returns 00:00:00 instead of throwing an exception on conversion errors.
Syntax
toTimeOrZero(x)Arguments
x— A string representation of a time.String
Returned value
Returns a Time value if successful, otherwise 00:00:00. Time
Examples
Usage example
SELECT toTimeOrZero('12:30:45'), toTimeOrZero('invalid')┌─toTimeOrZero('12:30:45')─┬─toTimeOrZero('invalid')─┐
│ 12:30:45 │ 00:00:00 │
└──────────────────────────┴─────────────────────────┘toUInt128
Introduced in: v1.1.0
Converts an input value to a value of type UInt128.
Throws an exception in case of an error.
The function uses rounding towards zero, meaning it truncates fractional digits of numbers.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt128('0xc0fe');.
See also:
Syntax
toUInt128(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 128-bit unsigned integer value. UInt128
Examples
Usage example
SELECT
toUInt128(128),
toUInt128(128.8),
toUInt128('128')
FORMAT VerticalRow 1:
──────
toUInt128(128): 128
toUInt128(128.8): 128
toUInt128('128'): 128toUInt128OrDefault
Introduced in: v21.11.0
Like toUInt128, this function converts an input value to a value of type UInt128 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt128OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt128
Returned value
Returns a value of type UInt128 if successful, otherwise returns the default value if passed, or 0 if not. UInt128
Examples
Successful conversion
SELECT toUInt128OrDefault('128', CAST('0', 'UInt128'))128Failed conversion
SELECT toUInt128OrDefault('abc', CAST('0', 'UInt128'))0toUInt128OrNull
Introduced in: v21.6.0
Like toUInt128, this function converts an input value to a value of type UInt128 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt128OrNull('0xc0fe');.
See also:
Syntax
toUInt128OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt128, otherwise NULL if the conversion is unsuccessful. UInt128 or NULL
Examples
Usage example
SELECT
toUInt128OrNull('128'),
toUInt128OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): ᴺᵁᴸᴸtoUInt128OrZero
Introduced in: v1.1.0
Like toUInt128, this function converts an input value to a value of type UInt128 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt128OrZero('0xc0fe');.
See also:
Syntax
toUInt128OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt128, otherwise 0 if the conversion is unsuccessful. UInt128
Examples
Usage example
SELECT
toUInt128OrZero('128'),
toUInt128OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0toUInt16
Introduced in: v1.1.0
Converts an input value to a value of type UInt16.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt16('0xc0fe');.
See also:
Syntax
toUInt16(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 16-bit unsigned integer value. UInt16
Examples
Usage example
SELECT
toUInt16(16),
toUInt16(16.16),
toUInt16('16')
FORMAT VerticalRow 1:
──────
toUInt16(16): 16
toUInt16(16.16): 16
toUInt16('16'): 16toUInt16OrDefault
Introduced in: v21.11.0
Like toUInt16, this function converts an input value to a value of type UInt16 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt16OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt16
Returned value
Returns a value of type UInt16 if successful, otherwise returns the default value if passed, or 0 if not. UInt16
Examples
Successful conversion
SELECT toUInt16OrDefault('16', CAST('0', 'UInt16'))16Failed conversion
SELECT toUInt16OrDefault('abc', CAST('0', 'UInt16'))0toUInt16OrNull
Introduced in: v1.1.0
Like toUInt16, this function converts an input value to a value of type UInt16 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt16OrNull('0xc0fe');.
See also:
Syntax
toUInt16OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt16, otherwise NULL if the conversion is unsuccessful. UInt16 or NULL
Examples
Usage example
SELECT
toUInt16OrNull('16'),
toUInt16OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt16OrNull('16'): 16
toUInt16OrNull('abc'): ᴺᵁᴸᴸtoUInt16OrZero
Introduced in: v1.1.0
Like toUInt16, this function converts an input value to a value of type UInt16 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt16OrZero('0xc0fe');.
See also:
Syntax
toUInt16OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt16, otherwise 0 if the conversion is unsuccessful. UInt16
Examples
Usage example
SELECT
toUInt16OrZero('16'),
toUInt16OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt16OrZero('16'): 16
toUInt16OrZero('abc'): 0toUInt256
Introduced in: v1.1.0
Converts an input value to a value of type UInt256. Throws an exception in case of an error. The function uses rounding towards zero, meaning it truncates fractional digits of numbers.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt256('0xc0fe');.
See also:
Syntax
toUInt256(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 256-bit unsigned integer value. UInt256
Examples
Usage example
SELECT
toUInt256(256),
toUInt256(256.256),
toUInt256('256')
FORMAT VerticalRow 1:
──────
toUInt256(256): 256
toUInt256(256.256): 256
toUInt256('256'): 256toUInt256OrDefault
Introduced in: v21.11.0
Like toUInt256, this function converts an input value to a value of type UInt256 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt256OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt256
Returned value
Returns a value of type UInt256 if successful, otherwise returns the default value if passed, or 0 if not. UInt256
Examples
Successful conversion
SELECT toUInt256OrDefault('-256', CAST('0', 'UInt256'))0Failed conversion
SELECT toUInt256OrDefault('abc', CAST('0', 'UInt256'))0toUInt256OrNull
Introduced in: v20.8.0
Like toUInt256, this function converts an input value to a value of type UInt256 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt256OrNull('0xc0fe');.
See also:
Syntax
toUInt256OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt256, otherwise NULL if the conversion is unsuccessful. UInt256 or NULL
Examples
Usage example
SELECT
toUInt256OrNull('256'),
toUInt256OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): ᴺᵁᴸᴸtoUInt256OrZero
Introduced in: v20.8.0
Like toUInt256, this function converts an input value to a value of type UInt256 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt256OrZero('0xc0fe');.
See also:
Syntax
toUInt256OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt256, otherwise 0 if the conversion is unsuccessful. UInt256
Examples
Usage example
SELECT
toUInt256OrZero('256'),
toUInt256OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0toUInt32
Introduced in: v1.1.0
Converts an input value to a value of type UInt32.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt32('0xc0fe');.
See also:
Syntax
toUInt32(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 32-bit unsigned integer value. UInt32
Examples
Usage example
SELECT
toUInt32(32),
toUInt32(32.32),
toUInt32('32')
FORMAT VerticalRow 1:
──────
toUInt32(32): 32
toUInt32(32.32): 32
toUInt32('32'): 32toUInt32OrDefault
Introduced in: v21.11.0
Like toUInt32, this function converts an input value to a value of type UInt32 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt32OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt32
Returned value
Returns a value of type UInt32 if successful, otherwise returns the default value if passed, or 0 if not. UInt32
Examples
Successful conversion
SELECT toUInt32OrDefault('32', CAST('0', 'UInt32'))32Failed conversion
SELECT toUInt32OrDefault('abc', CAST('0', 'UInt32'))0toUInt32OrNull
Introduced in: v1.1.0
Like toUInt32, this function converts an input value to a value of type UInt32 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt32OrNull('0xc0fe');.
See also:
Syntax
toUInt32OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt32, otherwise NULL if the conversion is unsuccessful. UInt32 or NULL
Examples
Usage example
SELECT
toUInt32OrNull('32'),
toUInt32OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt32OrNull('32'): 32
toUInt32OrNull('abc'): ᴺᵁᴸᴸtoUInt32OrZero
Introduced in: v1.1.0
Like toUInt32, this function converts an input value to a value of type UInt32 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt32OrZero('0xc0fe');.
See also:
Syntax
toUInt32OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt32, otherwise 0 if the conversion is unsuccessful. UInt32
Examples
Usage example
SELECT
toUInt32OrZero('32'),
toUInt32OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt32OrZero('32'): 32
toUInt32OrZero('abc'): 0toUInt64
Introduced in: v1.1.0
Converts an input value to a value of type UInt64.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported types:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt64('0xc0fe');.
See also:
Syntax
toUInt64(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns a 64-bit unsigned integer value. UInt64
Examples
Usage example
SELECT
toUInt64(64),
toUInt64(64.64),
toUInt64('64')
FORMAT VerticalRow 1:
──────
toUInt64(64): 64
toUInt64(64.64): 64
toUInt64('64'): 64toUInt64OrDefault
Introduced in: v21.11.0
Like toUInt64, this function converts an input value to a value of type UInt64 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt64OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt64
Returned value
Returns a value of type UInt64 if successful, otherwise returns the default value if passed, or 0 if not. UInt64
Examples
Successful conversion
SELECT toUInt64OrDefault('64', CAST('0', 'UInt64'))64Failed conversion
SELECT toUInt64OrDefault('abc', CAST('0', 'UInt64'))0toUInt64OrNull
Introduced in: v1.1.0
Like toUInt64, this function converts an input value to a value of type UInt64 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return NULL):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt64OrNull('0xc0fe');.
See also:
Syntax
toUInt64OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt64, otherwise NULL if the conversion is unsuccessful. UInt64 or NULL
Examples
Usage example
SELECT
toUInt64OrNull('64'),
toUInt64OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt64OrNull('64'): 64
toUInt64OrNull('abc'): ᴺᵁᴸᴸtoUInt64OrZero
Introduced in: v1.1.0
Like toUInt64, this function converts an input value to a value of type UInt64 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int*.
Unsupported arguments (return 0):
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt64OrZero('0xc0fe');.
See also:
Syntax
toUInt64OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt64, otherwise 0 if the conversion is unsuccessful. UInt64
Examples
Usage example
SELECT
toUInt64OrZero('64'),
toUInt64OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt64OrZero('64'): 64
toUInt64OrZero('abc'): 0toUInt8
Introduced in: v1.1.0
Converts an input value to a value of type UInt8.
Throws an exception in case of an error.
Supported arguments:
- Values or string representations of type (U)Int*.
- Values of type Float*.
Unsupported arguments:
- String representations of Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt8('0xc0fe');.
See also:
Syntax
toUInt8(expr)Arguments
expr— Expression returning a number or a string representation of a number.Expression
Returned value
Returns an 8-bit unsigned integer value. UInt8
Examples
Usage example
SELECT
toUInt8(8),
toUInt8(8.8),
toUInt8('8')
FORMAT VerticalRow 1:
──────
toUInt8(8): 8
toUInt8(8.8): 8
toUInt8('8'): 8toUInt8OrDefault
Introduced in: v21.11.0
Like toUInt8, this function converts an input value to a value of type UInt8 but returns the default value in case of an error.
If no default value is passed then 0 is returned in case of an error.
Syntax
toUInt8OrDefault(expr[, default])Arguments
expr— Expression returning a number or a string representation of a number.Stringor(U)Int*orFloat*default— Optional. The default value to return if parsing is unsuccessful.UInt8
Returned value
Returns a value of type UInt8 if successful, otherwise returns the default value if passed, or 0 if not. UInt8
Examples
Successful conversion
SELECT toUInt8OrDefault('8', CAST('0', 'UInt8'))8Failed conversion
SELECT toUInt8OrDefault('abc', CAST('0', 'UInt8'))0toUInt8OrNull
Introduced in: v1.1.0
Like toUInt8, this function converts an input value to a value of type UInt8 but returns NULL in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return NULL):
- String representations of ordinary Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt8OrNull('0xc0fe');.
See also:
Syntax
toUInt8OrNull(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt8, otherwise NULL if the conversion is unsuccessful. UInt8 or NULL
Examples
Usage example
SELECT
toUInt8OrNull('42'),
toUInt8OrNull('abc')
FORMAT VerticalRow 1:
──────
toUInt8OrNull('42'): 42
toUInt8OrNull('abc'): ᴺᵁᴸᴸtoUInt8OrZero
Introduced in: v1.1.0
Like toUInt8, this function converts an input value to a value of type UInt8 but returns 0 in case of an error.
Supported arguments:
- String representations of (U)Int8/16/32/128/256.
Unsupported arguments (return 0):
- String representations of ordinary Float* values, including
NaNandInf. - String representations of binary and hexadecimal values, e.g.
SELECT toUInt8OrZero('0xc0fe');.
See also:
Syntax
toUInt8OrZero(x)Arguments
x— A String representation of a number.String
Returned value
Returns a value of type UInt8, otherwise 0 if the conversion is unsuccessful. UInt8
Examples
Usage example
SELECT
toUInt8OrZero('-8'),
toUInt8OrZero('abc')
FORMAT VerticalRow 1:
──────
toUInt8OrZero('-8'): 0
toUInt8OrZero('abc'): 0toUUID
Introduced in: v1.1.0
Converts a String value to a UUID value.
Syntax
toUUID(string)Arguments
string— UUID as a string.StringorFixedString
Returned value
Returns a UUID from the string representation of the UUID. UUID
Examples
Usage example
SELECT toUUID('61f0c404-5cb3-11e7-907b-a6006ad3dba0') AS uuid┌─uuid─────────────────────────────────┐
│ 61f0c404-5cb3-11e7-907b-a6006ad3dba0 │
└──────────────────────────────────────┘toUUIDOrZero
Introduced in: v20.12.0
Converts an input value to a value of type UUID but returns zero UUID in case of an error.
Like toUUID but returns zero UUID (00000000-0000-0000-0000-000000000000) instead of throwing an exception on conversion errors.
Supported arguments:
- String representations of UUID in standard format (8-4-4-4-12 hexadecimal digits).
- String representations of UUID without hyphens (32 hexadecimal digits).
Unsupported arguments (return zero UUID):
- Invalid string formats.
- Non-string types.
Syntax
toUUIDOrZero(x)Arguments
x— A string representation of a UUID.String
Returned value
Returns a UUID value if successful, otherwise zero UUID (00000000-0000-0000-0000-000000000000). UUID
Examples
Usage example
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
Introduced in: v20.5.0
Converts a DateTime64 to a Int64 value with fixed microsecond precision.
The input value is scaled up or down appropriately depending on its precision.
Syntax
toUnixTimestamp64Micro(value)Arguments
value— DateTime64 value with any precision.DateTime64
Returned value
Returns a Unix timestamp in microseconds. Int64
Examples
Usage example
WITH toDateTime64('2025-02-13 23:31:31.011123', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);┌─toUnixTimestamp64Micro(dt64)─┐
│ 1739489491011123 │
└──────────────────────────────┘toUnixTimestamp64Milli
Introduced in: v20.5.0
Converts a DateTime64 to a Int64 value with fixed millisecond precision.
The input value is scaled up or down appropriately depending on its precision.
Syntax
toUnixTimestamp64Milli(value)Arguments
value— DateTime64 value with any precision.DateTime64
Returned value
Returns a Unix timestamp in milliseconds. Int64
Examples
Usage example
WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);┌─toUnixTimestamp64Milli(dt64)─┐
│ 1739489491011 │
└──────────────────────────────┘toUnixTimestamp64Nano
Introduced in: v20.5.0
Converts a DateTime64 to a Int64 value with fixed nanosecond precision.
The input value is scaled up or down appropriately depending on its precision.
Syntax
toUnixTimestamp64Nano(value)Arguments
value— DateTime64 value with any precision.DateTime64
Returned value
Returns a Unix timestamp in nanoseconds. Int64
Examples
Usage example
WITH toDateTime64('2025-02-13 23:31:31.011123456', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);┌─toUnixTimestamp64Nano(dt64)─┐
│ 1739489491011123456 │
└─────────────────────────────┘toUnixTimestamp64Second
Introduced in: v24.12.0
Converts a DateTime64 to a Int64 value with fixed second precision.
The input value is scaled up or down appropriately depending on its precision.
Syntax
toUnixTimestamp64Second(value)Arguments
value— DateTime64 value with any precision.DateTime64
Returned value
Returns a Unix timestamp in seconds. Int64
Examples
Usage example
WITH toDateTime64('2025-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);┌─toUnixTimestamp64Second(dt64)─┐
│ 1739489491 │
└───────────────────────────────┘