数据转换中的常见问题
ClickHouse 通常采用与 C++ 程序相同的行为。to<type> 函数和 cast 在某些情况下的行为有所不同,例如对于 LowCardinality:cast 会移除 LowCardinality 特性,而 to<type> 函数不会。对于 Nullable 也是如此。此行为与 SQL 标准不兼容,但可以通过 cast_keep_nullable 设置进行更改。
请注意,如果将某种数据类型的值转换为更小的数据类型 (例如从
Int64 转为 Int32) ,或者在
不兼容的数据类型之间进行转换 (例如从 String 转为 Int) ,可能会导致数据丢失。请务必仔细检查结果是否符合预期。toString 函数说明
toString 函数家族支持在数字、字符串 (但不包括定长字符串) 、日期和日期时间之间进行转换。
所有这些函数都只接受一个参数。
- 在转换为字符串或从字符串转换时,值会按照与 TabSeparated 格式 (以及几乎所有其他文本格式) 相同的规则进行格式化或解析。如果字符串无法解析,则会抛出异常,并取消请求。
- 在将日期转换为数字或反向转换时,日期对应自 Unix 纪元开始以来的天数。
- 在将日期时间转换为数字或反向转换时,日期时间对应自 Unix 纪元开始以来的秒数。
DateTime参数的toString函数可以接受第二个 String 参数,该参数包含时区名称,例如:Europe/Amsterdam。在这种情况下,时间会按照指定的时区进行格式化。
关于 toDate/toDateTime 函数的说明
toDate/toDateTime 函数的日期和日期时间格式定义如下:
toDate(unix_timestamp) 写法;否则这会报错,并且必须写成更繁琐的 toDate(toDateTime(unix_timestamp))。
日期与日期时间之间的转换会以自然的方式进行:添加空时间部分,或去掉时间部分。
数值类型之间的转换遵循与 C++ 中不同数值类型之间赋值相同的规则。
示例
Query
Response
toUnixTimestamp 函数。
CAST
Introduced in:v1.1.0 将一个值转换为指定的数据类型。 与reinterpret 函数不同,CAST 会尝试在目标类型中得到相同的值。
如果无法实现,则会引发异常。
Syntax
Any
示例
基本用法
Query
Response
Query
Response
Query
Response
DATE
引入于:v21.2.0 将参数转换为 Date 数据类型。这是toDate 的 MySQL 兼容别名,行为与 toDate 相同。
语法
Date 值。Date
示例
基本用法
Query
Response
accurateCast
引入版本:v1.1.0 将一个值转换为指定的数据类型。与CAST 不同,accurateCast 会执行更严格的类型检查;如果转换会导致数据精度丢失,或无法进行转换,则会抛出异常。
与常规的 CAST 相比,该函数更安全,因为它可以防止精度丢失和无效转换。
语法
Any
示例
转换成功
Query
Response
Query
Response
accurateCastOrDefault
引入版本:v21.1.0 将值转换为指定的数据类型。 与accurateCast 类似,但如果无法进行精确转换,则返回默认值,而不是抛出异常。
如果将默认值作为第二个参数传入,则该值必须属于目标类型。
如果未提供默认值,则使用目标类型的默认值。
语法
x— 要转换的值。AnyT— 目标数据类型名称。const Stringdefault_value— 可选。如果转换失败,返回此默认值。Any
Any
示例
转换成功
Query
Response
Query
Response
Query
Response
accurateCastOrNull
引入版本:v1.1.0 将值转换为指定的数据类型。 与accurateCast 类似,但如果无法精确完成转换,则返回 NULL,而不是抛出异常。
此函数结合了 accurateCast 的安全性以及更平稳的错误处理方式。
语法
NULL。Any
示例
转换成功
Query
Response
Query
Response
formatRow
引入版本:v20.7.0 通过指定格式将任意表达式转换为字符串。如果格式包含前缀/后缀,它们会写入每一行。
此函数仅支持基于行的格式。
String
示例
基本用法
Query
Response
Query
Response
formatRowNoNewline
引入版本:v20.7.0 与formatRow 相同,但会去掉每行末尾的换行符。
通过指定的格式将任意表达式转换为字符串,但会移除结果末尾的所有换行符。
语法
String
示例
基本用法
Query
Response
fromUnixTimestamp64Micro
引入于:v20.5.0 将以微秒为单位的 Unix 时间戳转换为具有微秒精度的DateTime64 值。
输入值会被视为具有微秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 起经过的微秒数) 。
语法
DateTime64 值。DateTime64(6)
示例
使用示例
Query
Response
fromUnixTimestamp64Milli
引入版本:v20.5.0 将以毫秒为单位的 Unix 时间戳转换为具有毫秒精度的DateTime64 值。
输入值会被视为毫秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 起经过的毫秒数) 。
语法
DateTime64 值。DateTime64(3)
示例
用法示例
Query
Response
fromUnixTimestamp64Nano
引入版本:v20.5.0 将纳秒级 Unix 时间戳转换为具有纳秒精度的DateTime64 值。
输入值会被视为纳秒精度的 Unix 时间戳 (即自 1970-01-01 00:00:00 UTC 以来的纳秒数) 。
请注意,输入值会被视为 UTC 时间戳,而不是按输入值自身的时区来处理。
DateTime64 值。DateTime64(9)
示例
用法示例
Query
Response
fromUnixTimestamp64Second
引入版本:v24.12.0 将以秒为单位的 Unix 时间戳转换为秒精度的DateTime64 值。
输入值会被视为秒精度的 Unix 时间戳 (自 1970-01-01 00:00:00 UTC 起经过的秒数) 。
语法
DateTime64 值。DateTime64(0)
示例
用法示例
Query
Response
kqlParameterCast
引入版本:v26.9.0 根据声明的 Kusto 查询语言类型检查值,并将其转换为该类型对应的 ClickHouse 承载类型:类型不属于所声明 KQL 类型的参数会在分析阶段被 拒绝,而不符合要求的值 (例如int 溢出) 则会产生逐行
错误。第二个参数是声明的 KQL 类型名称,第三个参数用于在错误消息中描述该
参数;两者都必须是常量字符串。
当 dialect = 'kusto' 时,此函数用于支持带类型的函数参数。不应直接在 SQL 中
调用此函数。
语法
value— KQL 函数调用传入的参数。-type— 声明的 KQL 类型名称,为常量字符串。-parameter— 参数说明,为错误消息中使用的常量字符串。
value,以声明类型的 ClickHouse 承运商形式返回。
示例
long
Query
Response
Query
Response
kqlToTimespan
引入版本:v26.8.0 将值转换为 timespan (以纳秒为单位的Interval) ,其行为与 Kusto 查询语言中的
totimespan() 相同:timespan 保持不变,数值按天数处理,字符串则按
[-][d.]hh:mm:ss[.fffffff] 格式解析;解析失败时转换为 NULL。
当 dialect = 'kusto' 时,此函数为 totimespan() 提供底层支持。它不应直接通过 SQL 调用。
语法
x— timespan、天数或表示 timespan 的字符串。
NULL。
示例
字符串
Query
Response
Query
Response
parseDateTime
引入版本:v23.3.0 根据 MySQL 日期格式字符串解析日期时间字符串。 此函数是formatDateTime 的逆函数。
它使用格式 String 解析 String 参数,并返回 DateTime 类型。
语法
TO_UNIXTIME
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 用于指定如何解析 time_string 的格式字符串。Stringtimezone— 可选。时区。String
DateTime
示例
使用示例
Query
Response
parseDateTime32BestEffort
Introduced in: v20.9.0 将日期和时间的字符串表示形式转换为DateTime 数据类型。
该函数可以解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 以及其他一些日期和时间格式。
语法
time_string 以 DateTime 类型返回。DateTime
示例
使用示例
Query
Response
Query
Response
Query
Response
parseDateTime32BestEffortOrNull
引入版本:v20.9.0 与parseDateTime32BestEffort 相同,但在遇到无法处理的日期格式时会返回 NULL。
语法
DateTime 对象;如果解析失败,则返回 NULL。DateTime
示例
使用示例
Query
Response
parseDateTime32BestEffortOrZero
引入版本:v20.9.0 与parseDateTime32BestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。
语法
DateTime 对象;如果解析失败,则返回零日期 (1970-01-01 00:00:00) 。DateTime
示例
使用示例
Query
Response
parseDateTime64
引入版本:v24.11.0 按照 MySQL 日期格式字符串,解析带有子秒级精度的日期时间字符串。 对于 DateTime64,此函数是formatDateTime 的逆操作。
它使用 格式 String 解析一个 String 参数。返回 DateTime64 类型,可表示 0000 年到 9999 年之间、具有子秒级精度的日期时间值 (较高精度覆盖的范围更窄,因为该值以 Int64 tick 数存储:精度 8 可到约 4892 年,精度 9 覆盖 1677 年到 2262 年) 。
语法
time_string— 将被解析为 DateTime64 的 String。Stringformat— 用于指定如何解析 time_string 的格式字符串。Stringtimezone— 可选。时区。String
DateTime64
示例
用法示例
Query
Response
parseDateTime64BestEffort
在 v20.1.0 中引入 与parseDateTimeBestEffort 函数相同,但还支持解析毫秒和微秒,并返回 DateTime64 数据类型。
语法
time_string— 包含待转换日期或日期时间的 String。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
DateTime64 数据类型的 time_string。 DateTime64
示例
用法示例
Query
Response
parseDateTime64BestEffortOrNull
引入版本:v20.1.0 与parseDateTime64BestEffort 相同,不同之处在于,遇到无法处理的日期格式时会返回 NULL。
语法
time_string— 包含要转换的日期或日期时间的 String。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
DateTime64 类型 time_string;如果输入无法解析,则返回 NULL。DateTime64 或 NULL
示例
用法示例
Query
Response
parseDateTime64BestEffortOrZero
引入版本:v20.1.0 与parseDateTime64BestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。
语法
time_string— 包含要转换的日期或日期时间的 String。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会按照该时区解析time_string。String
DateTime64 类型 time_string;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 00:00:00.000) 。DateTime64
示例
使用示例
Query
Response
parseDateTime64BestEffortUS
引入版本:v22.8.0 与parseDateTime64BestEffort 相同,但在日期格式存在歧义时,此函数会优先采用美国日期格式 (MM/DD/YYYY 等) 。
语法
time_string— 包含要转换的日期或日期时间的 String。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
time_string 转换为 DateTime64 后的结果;对于有歧义的情况,优先按美国日期格式解析。DateTime64
示例
使用示例
Query
Response
parseDateTime64BestEffortUSOrNull
引入版本:v22.8.0 与parseDateTime64BestEffort 相同,不同之处在于:当日期格式存在歧义时,此函数会优先采用美国日期格式 (MM/DD/YYYY 等) ;当遇到无法处理的日期格式时,则返回 NULL。
语法
time_string— 包含要转换的日期或日期时间的 String。(String)precision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。(UInt8)time_zone— 可选。时区。函数会根据该时区解析time_string。(String)
DateTime64 类型值;如果输入无法解析,则返回 NULL。(DateTime64 或 NULL)
示例
使用示例
Query
Response
parseDateTime64BestEffortUSOrZero
引入版本:v22.8.0 与parseDateTime64BestEffort 相同,不同之处在于,此函数在存在歧义时会优先使用美国日期格式 (MM/DD/YYYY 等) ,并且在遇到无法处理的日期格式时会返回零日期或零日期时间。
语法
time_string— 包含要转换的日期或日期时间的 String。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。该函数会按此时区解析time_string。String
time_string 的 DateTime64 值;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 00:00:00.000) 。DateTime64
示例
使用示例
Query
Response
parseDateTime64InJodaSyntax
引入版本:v24.10.0 根据 Joda 日期格式字符串,解析具有子秒级精度的日期和时间字符串。 对于 DateTime64,此函数是formatDateTimeInJodaSyntax 的逆操作。
它使用 Joda 风格的格式 String 解析一个 String 类型的参数。返回 DateTime64 类型,可表示 0000 年至 9999 年间且具有子秒级精度的日期和时间 (较高精度覆盖的范围更窄,因为该值以 Int64 tick 数存储:精度 8 最远可达约 4892 年,精度 9 的范围为 1677 年至 2262 年) 。
有关格式模式,请参阅 Joda Time documentation。
语法
time_string— 要解析为 DateTime64 的字符串。Stringformat— Joda 语法格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
DateTime64
示例
使用示例
Query
Response
parseDateTime64InJodaSyntaxOrNull
Introduced in: v24.10.0 与parseDateTime64InJodaSyntax 相同,但遇到无法解析的日期格式时会返回 NULL。
Syntax
time_string— 要解析为 DateTime64 的字符串。Stringformat— 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
Nullable(DateTime64)
示例
使用示例
Query
Response
parseDateTime64InJodaSyntaxOrZero
引入版本:v24.10.0 与parseDateTime64InJodaSyntax 相同,但在遇到无法解析的日期格式时会返回零日期。
语法
time_string— 要解析为 DateTime64 的字符串。Stringformat— 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
DateTime64
示例
使用示例
Query
Response
parseDateTime64OrNull
引入于:v24.11.0 与parseDateTime64 相同,但遇到无法解析的日期格式时会返回 NULL。
语法
time_string— 将被解析为 DateTime64 的字符串。Stringformat— 指定 time_string 解析方式的格式字符串。Stringtimezone— 可选。时区。String
Nullable(DateTime64)
示例
用法示例
Query
Response
parseDateTime64OrZero
引入版本:v24.11.0 与parseDateTime64 相同,但遇到无法解析的日期格式时会返回零日期。
语法
time_string— 要解析为 DateTime64 的字符串。Stringformat— 指定解析 time_string 方式的格式字符串。Stringtimezone— 可选。时区。String
DateTime64
示例
用法示例
Query
Response
parseDateTimeBestEffort
版本引入:v1.1.0 将 String 字符串表示形式中的日期和时间转换为 DateTime 数据类型。 该函数可解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 格式以及其他一些日期和时间格式。 支持的非标准格式:- 包含 9..10 位 Unix 时间戳 的字符串。
- 包含日期和时间部分的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 包含日期但不含时间部分的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 包含日期和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM会替换为01。 - 包含日期、时间及时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
DateTime 类型的 time_string。DateTime
示例
用法示例
Query
Response
Query
Response
Query
Response
parseDateTimeBestEffortOrNull
引入版本:v1.1.0 与parseDateTimeBestEffort 相同,不同之处在于当遇到无法处理的日期格式时,它会返回 NULL。
该函数可解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 的日期和时间格式以及其他一些格式。
支持的非标准格式:
- 包含 9 到 10 位 Unix 时间戳的字符串。
- 包含日期和时间部分的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 包含日期但不包含时间部分的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 包含日和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM会被替换为01。 - 包含日期、时间和时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
time_string 会以 DateTime 形式返回;如果输入无法解析,则返回 NULL。DateTime 或 NULL
示例
使用示例
Query
Response
parseDateTimeBestEffortOrZero
引入版本:v1.1.0 与parseDateTimeBestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间。
该函数可解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 日期和时间规范、ClickHouse 格式以及其他一些日期和时间格式。
支持的非标准格式:
- 包含 9 到 10 位 Unix 时间戳的字符串。
- 包含日期和时间部分的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 包含日期但不包含时间部分的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 包含日期和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM会被替换为01。 - 包含日期、时间和时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
time_string 作为 DateTime 返回;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 或 1970-01-01 00:00:00) 。DateTime
示例
使用示例
Query
Response
parseDateTimeBestEffortUS
引入于:v1.1.0 对于 ISO 日期格式 (例如YYYY-MM-DD hh:mm:ss) 以及其他能够明确识别出月份和日期组件的日期格式 (例如 YYYYMMDDhhmmss、YYYY-MM、DD hh 或 YYYY-MM-DD hh:mm:ss ±h:mm) ,此函数的行为与 parseDateTimeBestEffort 相同。
如果无法明确识别月份和日期组件,例如 MM/DD/YYYY、MM-DD-YYYY 或 MM-DD-YY,则会优先按美国日期格式解析,而不是按 DD/MM/YYYY、DD-MM-YYYY 或 DD-MM-YY 解析。
不过,上一条有一个例外:如果月份值大于 12 且小于等于 31,此函数会回退到 parseDateTimeBestEffort 的行为,例如 15/08/2020 会被解析为 2020-08-15。
语法
time_string 解析为 DateTime 的结果;对于有歧义的情况,优先按照美国日期格式进行解析。DateTime
示例
使用示例
Query
Response
parseDateTimeBestEffortUSOrNull
引入版本:v1.1.0 与parseDateTimeBestEffortUS 函数相同,不同之处在于:当遇到无法处理的日期格式时,它会返回 NULL。
对于 ISO 日期格式,此函数的行为与 parseDateTimeBestEffort 相同;但在存在歧义的情况下,会优先采用美国日期格式,并在解析出错时返回 NULL。
语法
time_string 按照美国日期格式优先规则解析为 DateTime 并返回;如果输入无法解析,则返回 NULL。DateTime 或 NULL
示例
用法示例
Query
Response
parseDateTimeBestEffortUSOrZero
引入版本:v1.1.0 与parseDateTimeBestEffortUS 函数相同,但当遇到无法处理的日期格式时,它会返回零日期 (1970-01-01) 或零日期时间 (1970-01-01 00:00:00) 。
对于 ISO 日期格式,此函数的行为与 parseDateTimeBestEffort 相同;但在存在歧义的情况下,会优先采用美国日期格式,并在解析错误时返回零值。
语法
time_string 解析为 DateTime 并返回;如果输入无法解析,则返回零日期/日期时间 (1970-01-01 或 1970-01-01 00:00:00) 。DateTime
示例
使用示例
Query
Response
parseDateTimeInJodaSyntax
引入版本:v23.3.0 根据 Joda 日期格式字符串解析日期时间字符串。 此函数是formatDateTimeInJodaSyntax 的逆操作。
它使用 Joda 风格的格式 String 解析 String 参数,并返回 DateTime 类型。
有关格式模式,请参阅 Joda Time 文档。
语法
time_string— 将被解析为 DateTime 的 String。Stringformat— Joda 语法格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
DateTime
示例
使用示例
Query
Response
parseDateTimeInJodaSyntaxOrNull
引入版本:v23.3.0 与parseDateTimeInJodaSyntax 相同,但在遇到无法解析的日期格式时返回 NULL。
语法
time_string— 要被解析为 DateTime 的字符串。Stringformat— 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
Nullable(DateTime)
示例
使用示例
Query
Response
parseDateTimeInJodaSyntaxOrZero
引入版本:v23.3.0 与parseDateTimeInJodaSyntax 相同,但遇到无法解析的日期格式时会返回零日期。
语法
time_string— 要解析为 DateTime 的字符串。Stringformat— 采用 Joda 语法的格式字符串,用于指定如何解析 time_string。Stringtimezone— 可选。时区。String
DateTime
示例
使用示例
Query
Response
parseDateTimeOrNull
版本引入:v23.3.0 与parseDateTime 相同,但遇到无法解析的日期格式时会返回 NULL。
语法
str_to_date
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 指定如何解析 time_string 的格式字符串。Stringtimezone— 可选。时区。String
Nullable(DateTime)
示例
使用示例
Query
Response
parseDateTimeOrZero
在以下版本中引入:v23.3.0 与parseDateTime 相同,但在遇到无法解析的日期格式时会返回零日期。
语法
time_string— 要解析为 DateTime 的字符串。Stringformat— 指定time_string解析方式的格式字符串。Stringtimezone— 可选。时区。String
DateTime
示例
用法示例
Query
Response
reinterpret
引入版本:v1.1.0 对给定的值x,使用其在内存中的同一源字节序列,并将其重新解释为目标类型。
当目标类型为 String 时,仅当源 Array 的元素类型为定长且在内存中连续存放时才支持 (例如,Array(UInt8) 或 Array(FixedString(2))) ;其元素字节会按照其原生内存顺序原样复制,因此在任何架构上,都可以将结果重新解释回原始 Array 类型。元素为变长 (例如,Array(String)) 或 Nullable (例如,Array(Nullable(Int32))) 的数组不受支持。
语法
Any
示例
用法示例
Query
Response
Query
Response
Query
Response
reinterpretAsDate
引入版本:v1.1.0 将输入值重新解释为 Date 值 (假设采用小端字节序) ,即自 Unix 纪元 1970-01-01 起经过的天数 语法Date
示例
使用示例
Query
Response
reinterpretAsDateTime
引入版本:v1.1.0 将输入值重新解释为 DateTime 值 (按小端字节序) ,即自 Unix 纪元 1970-01-01 开始以来的天数 语法DateTime
示例
用法示例
Query
Response
reinterpretAsFixedString
引入版本:v1.1.0 将输入值重新解释为定长字符串 (假定采用小端字节序) 。 末尾的 null 字节会被忽略。例如,对于 UInt32 值 255,该函数会返回一个仅包含单个字符的字符串。 语法x 的字节的定长字符串。FixedString
示例
使用示例
Query
Response
reinterpretAsFloat32
Introduced in: v1.1.0 将输入值重新解释为 Float32 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,输出结果则未定义。
语法
x。Float32
示例
使用示例
Query
Response
reinterpretAsFloat64
在以下版本中引入:v1.1.0 将输入值重新解释为 Float64 类型的值。 与CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出未定义。
语法
x。Float64
示例
用法示例
Query
Response
reinterpretAsInt128
首次引入于:v1.1.0 将输入值重新解释为 Int128 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,输出结果将是未定义的。
语法
x。Int128
示例
用法示例
Query
Response
reinterpretAsInt16
首次引入于:v1.1.0 将输入值重新解释为 Int16 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。
语法
x。Int16
示例
使用示例
Query
Response
reinterpretAsInt256
引入版本:v1.1.0 将输入值重新解释为 Int256 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。
语法
x。Int256
示例
使用示例
Query
Response
reinterpretAsInt32
引入版本:v1.1.0 将输入值重新解释为 Int32 类型的值。 与CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。
语法
x。Int32
示例
用法示例
Query
Response
reinterpretAsInt64
引入版本:v1.1.0 将输入值重新解释为 Int64 类型的值。 与CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。
语法
x。Int64
示例
使用示例
Query
Response
reinterpretAsInt8
引入版本:v1.1.0 将输入值重新解释为 Int8 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示该输入类型,则输出结果未定义。
语法
x。Int8
示例
用法示例
Query
Response
reinterpretAsString
引入版本:v1.1.0 将输入值重新解释为字符串。 对于标量值,字节顺序会归一化为小端字节序,且末尾的空字节会被忽略。例如,对于值为 255 的 UInt32,该函数会返回一个仅包含单个字符的字符串。 对于由固定大小元素组成的Array,元素字节会按其原生内存顺序原样复制,不会裁剪末尾的零字节,也不会归一化为小端字节序,因此结果可以在任何架构上重新解释回原始 Array 类型。
语法
x 的字节序列的字符串。String
示例
用法示例
Query
Response
Query
Response
reinterpretAsUInt128
首次引入于:v1.1.0 将输入值重新解释为 UInt128 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示该输入类型,则输出结果未定义。
语法
x。UInt128
示例
使用示例
Query
Response
reinterpretAsUInt16
引入版本:v1.1.0 将输入值重新解释为 UInt16 类型的值。 与CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。
语法
x。UInt16
示例
用法示例
Query
Response
reinterpretAsUInt256
Introduced in: v1.1.0 将输入值重新解释为 UInt256 类型的值。 与CAST 不同,此函数不会尝试保留原始值;如果目标类型无法表示输入类型,则输出结果未定义。
Syntax
x。UInt256
示例
用法示例
Query
Response
reinterpretAsUInt32
首次引入版本:v1.1.0 将输入值重新解释为 UInt32 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果是未定义的。
语法
x 值。UInt32
示例
使用示例
Query
Response
reinterpretAsUInt64
首次引入版本:v1.1.0 将输入值重新解释为 UInt64 类型的值。 与CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出未定义。
语法
x 重新解释后的值。UInt64
示例
使用示例
Query
Response
reinterpretAsUInt8
Introduced in:v1.1.0 将输入值重新解释为 UInt8 类型的值。 与CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。
Syntax
x。UInt8
示例
用法示例
Query
Response
reinterpretAsUUID
首次引入版本:v1.1.0 接受一个 16 字节字符串,并将其中每个 8 字节半段按 little-endian 字节序解释后返回一个 UUID。如果字符串长度不足,函数会像在末尾补足所需数量的空字节一样处理;如果字符串长度超过 16 字节,则会忽略末尾多出的字节。 语法fixed_string— 大端字节串。FixedString
UUID
示例
字符串转换为 UUID
Query
Response
toBFloat16
引入版本:v1.1.0 将输入值转换为 BFloat16 类型的值。 如果发生错误,会抛出异常。 另请参见: 语法expr— 返回数值或数字字符串表示形式的表达式。Expression
BFloat16
示例
使用示例
Query
Response
toBFloat16OrNull
引入于:v1.1.0 将 String 输入值转换为 BFloat16 类型的值。 如果字符串不表示浮点值,则该函数返回 NULL。 支持的参数:- 数值的字符串表示形式。
NULL) :
- 二进制和十六进制值的字符串表示形式。
- 数值。
该函数在从字符串表示形式转换时,允许静默丢失精度。
x— 数字的String字符串表示形式。String
NULL。BFloat16 或 NULL
示例
用法示例
Query
Response
toBFloat16OrZero
引入版本:v1.1.0 将 String 输入值转换为 BFloat16 类型的值。 如果该字符串不表示浮点数值,则函数返回零。 支持的参数:- 数值的字符串表示形式。
0) :
- 二进制和十六进制值的字符串表示形式。
- 数值。
该函数允许在从字符串表示形式转换时静默丢失精度。
x— 数字的String表示形式。String
0。BFloat16
示例
使用示例
Query
Response
toBool
Introduced in:v22.2.0 将输入值转换为 Bool 类型。 语法expr— 返回数值或字符串的表达式。对于字符串,可接受 ‘true’ 或 ‘false’ (不区分大小写) 。(U)Int*或Float*或String或Expression
true 或 false。Bool
示例
用法示例
Query
Response
toDate
引入版本:v1.1.0 将输入值转换为Date 类型。
支持从 String、FixedString、DateTime 或数值类型转换。
语法
x— 要转换的输入值。String或FixedString或DateTime或(U)Int*或Float*
Date
示例
将 String 转换为 Date
Query
Response
Query
Response
Query
Response
toDate32
引入版本:v21.9.0 将参数转换为 Date32 数据类型。 如果值超出[0000-01-01, 9999-12-31] 范围,toDate32 会返回 Date32 支持的边界值。
如果参数类型为 Date,则会考虑其取值边界。
语法
Date32
示例
在取值范围内
Query
Response
Query
Response
toDate32OrDefault
引入版本:v21.11.0 将参数转换为 Date32 数据类型。如果参数无法转换 (包括超出 Date32 范围的数值) ,该函数将返回默认值:如果指定了第二个参数,则返回该参数;否则返回 Date32 的历史默认值1900-01-01 (而非其下界值 0000-01-01) 。如果参数的类型为 Date,则会考虑其边界。
请注意,与 toDate32 不同,该函数不会将超出范围的数值参数限制在 Date32 的边界值内;此类参数会被视为无法转换。
语法
Date32 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 1900-01-01。Date32
示例
转换成功
Query
Response
Query
Response
Query
Response
toDate32OrNull
引入版本:v21.9.0 将输入值转换为 Date32 类型的值;如果参数无效,则返回NULL。
与 toDate32 相同,但在参数无效时会返回 NULL。
语法
x— 日期的字符串表示形式。String
NULL。Date32 或 NULL
示例
用法示例
Query
Response
toDate32OrZero
引入版本:v21.9.0 将输入值转换为 Date32 类型的值;如果收到无效参数,则返回默认值1900-01-01。
与 toDate32 相同,但如果收到无效参数,则返回 1900-01-01。
请注意,1900-01-01 是无效输入的历史默认值,并非 Date32 的下界值;其下界值为 0000-01-01。
另请参见:
语法
x— 日期的字符串表示形式。String
1900-01-01) 。Date32
示例
使用示例
Query
Response
toDateOrDefault
引入版本:v21.11.0 与 toDate 类似,但如果转换失败,则返回默认值:若指定了第二个参数,则返回该参数;否则返回 Date 的下界值。 语法Date
示例
转换成功
Query
Response
Query
Response
toDateOrNull
首次引入版本:v1.1.0 将输入值转换为Date 类型的值;如果参数无效,则返回 NULL。
与 toDate 相同,但在参数无效时返回 NULL。
整数参数的解释方式与 toDate 相同 (如果不超过 65535,则表示自 1970-01-01 起的天数,否则表示 Unix 时间戳) ;如果超出 Date 类型的取值范围,则返回 NULL。
语法
x— 日期的字符串表示形式,或以天数表示的整数,或 Unix 时间戳。String或(U)Int8/16/32/64
Date 值,否则返回 NULL。Date 或 NULL
示例
用法示例
Query
Response
toDateOrZero
引入版本:v1.1.0 将输入值转换为Date 类型的值;如果传入的是无效参数,则返回 Date 的下界值。
与 toDate 相同,但如果传入的是无效参数,则返回 Date 的下界值。
另请参见:
语法
x— 日期的字符串表示形式。String
1970-01-01) 。Date
示例
用法示例
Query
Response
toDateTime
引入版本:v1.1.0 将输入值转换为 DateTime 类型。如果
expr 是数值,则会将其解释为自 Unix 纪元开始以来的秒数 (即 Unix 时间戳) 。
如果 expr 是 String,则可能会被解释为 Unix 时间戳,或者解释为日期 / 日期时间的字符串表示形式。
因此,由于存在歧义,较短数字的字符串表示形式 (最多 4 位) 会明确禁用解析。例如,字符串 '1999' 既可能表示年份 (Date / DateTime 的不完整字符串表示形式) ,也可能是 Unix 时间戳。更长的数字字符串则允许解析。expr 是 Time 或 Time64 值,则会将其解释为自 Unix 纪元开始以来的秒数:Time64 的小数部分会向负无穷方向取整,超出 DateTime 范围的值则遵循 date_time_overflow_behavior 设置。
语法
DateTime
示例
使用示例
Query
Response
toDateTime32
引入版本:v20.9.0 将输入值转换为DateTime 类型。
支持从 String、FixedString、Date、Date32、Time、Time64、DateTime、DateTime64 或数值类型 ((U)Int8、(U)Int16、(U)Int32、(U)Int64、(U)Int128、(U)Int256、BFloat16、Float32、Float64) 转换。Decimal 值不受支持,会引发异常。
DateTime32 是 DateTime 的别名,支持 1970-01-01 00:00:00 至 2106-02-07 06:28:15 范围内的日期时间。
从字符串或上述可饱和的数值类型转换时,超出此范围的值会被饱和到范围边界。非有限浮点值 (NaN、inf、-inf) 无法转换,会引发异常。
从 Date32、DateTime64、Time 或 Time64 等其他日期时间类型转换时,遵循 date_time_overflow_behavior 设置:默认的 ignore 模式可能产生回绕值,saturate 会将值限制在范围边界内,而 throw 会引发异常。Time64 值会先向负无穷取整到整秒。
语法
x— 要转换的输入值。String、FixedString、(U)Int*、Float*、BFloat16、Date、Date32、Time、Time64、DateTime或DateTime64timezone— 可选。返回的DateTime值所使用的时区。String
DateTime
示例
从字符串转换
Query
Response
Query
Response
Query
Response
toDateTime64
引入版本:v20.1.0 将输入值转换为DateTime64 类型的值。
语法
expr— 返回数值或数值字符串表示形式的表达式。Expressionscale— 时间粒度 (精度) :10^(-scale) 秒。UInt8timezone— 可选。指定DateTime64对象的时区。String
DateTime64
示例
值在范围内
Query
Response
Query
Response
Query
Response
toDateTime64OrDefault
引入版本:v21.11.0 与 toDateTime64 类似,此函数会将输入值转换为 DateTime64 类型的值, 但如果收到无效参数,则返回 DateTime64 的默认值 或提供的默认值。 语法expr— 返回数值或数值字符串表示形式的表达式。String或(U)Int*或Float*scale— 时间粒度 (精度) :10^-precision 秒。UInt8timezone— 可选。时区。Stringdefault— 可选。解析失败时返回的默认值。DateTime64
DateTime64
示例
成功转换
Query
Response
Query
Response
toDateTime64OrNull
引入版本:v20.1.0 将输入值转换为DateTime64 类型的值;如果接收到无效参数,则返回 NULL。
与 toDateTime64 相同,但如果接收到无效参数,则返回 NULL。
整数参数会被解释为以整秒表示的 Unix 时间戳;如果超出 DateTime64 类型的取值范围,则返回 NULL。
语法
x— 带有子秒级精度的日期时间字符串表示形式,或整数 Unix 时间戳。String或(U)Int8/16/32/64precision— 可选。返回值的子秒级精度。UInt8timezone— 可选。返回值的时区。String
NULL。DateTime64 或 NULL
示例
用法示例
Query
Response
toDateTime64OrZero
引入版本:v20.1.0 将输入值转换为 DateTime64 类型的值;如果接收到无效参数,则返回零 DateTime64 值 (Unix 纪元,1970-01-01 00:00:00) 。
与 toDateTime64 相同,但在接收到无效参数时会返回零 DateTime64 值。
另请参见:
语法
1970-01-01 00:00:00) 。DateTime64
示例
使用示例
Query
Response
toDateTimeOrDefault
引入版本:v21.11.0 与 toDateTime 类似,但如果转换失败,则返回默认值:若指定了第三个参数,则返回该参数;否则返回 DateTime 的下界值。 语法expr— 返回数值或数值字符串表示形式的表达式。String或(U)Int*或Float*timezone— 可选。时区。Stringdefault— 可选。解析失败时返回的默认值。DateTime
DateTime 类型的值;否则如果传入了默认值,则返回该默认值;若未传入,则返回 1970-01-01 00:00:00。DateTime
示例
转换成功
Query
Response
Query
Response
toDateTimeOrNull
引入版本:v1.1.0 将输入值转换为DateTime 类型的值;如果接收到无效参数,则返回 NULL。
与 toDateTime 相同,但在接收到无效参数时会返回 NULL。
整数参数会被解释为 Unix 时间戳;如果超出 DateTime 类型的取值范围,则返回 NULL。
语法
x— 日期时间的字符串表示形式,或整数 Unix 时间戳。String或(U)Int8/16/32/64timezone— 可选。返回值的时区。String
DateTime 值,否则返回 NULL。DateTime 或 NULL
示例
用法示例
Query
Response
Query
Response
toDateTimeOrZero
引入版本:v1.1.0 将输入值转换为 DateTime 类型的值;如果收到无效参数,则返回 DateTime 的下界值。 与 toDateTime 相同,但如果收到无效参数,则返回 DateTime 的下界值。 语法x— 日期时间的字符串表示形式。String
1970-01-01 00:00:00) 。DateTime
示例
使用示例
Query
Response
toDecimal128
引入版本:v18.12.0 将输入值转换为标度为S 的 Decimal(38, S) 类型值。
出错时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
- Float* 类型的
NaN和Inf值,及其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal128('0xc0fe', 1);。
如果
expr 的值超出 Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),则可能发生溢出。
小数部分中过多的位数会被截掉 (不进行舍入) 。
整数部分中过多的位数会导致异常。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 取值范围为 0 到 38 的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
Decimal(38, S) 的值 Decimal128(S)
示例
用法示例
Query
Response
toDecimal128OrDefault
Introduced in: v21.11.0 与toDecimal128 类似,此函数将输入值转换为 Decimal(38, S) 类型的值,但如果发生错误,则返回默认值。
语法
expr— 数字的 String 字符串表示形式。StringS— 介于 0 到 38 之间的 scale 参数,用于指定数字的小数部分可包含的位数。UInt8default— 可选。如果解析为 Decimal128(S) 类型失败,则返回此默认值。Decimal128(S)
Decimal128(S)
示例
转换成功
Query
Response
Query
Response
toDecimal128OrNull
引入版本:v20.1.0 将输入值转换为Decimal(38, S) 类型的值;如果出错,则返回 NULL。
与 toDecimal128 类似,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
NULL) :
- Float* 值
NaN和Inf及其字符串表示形式 (不区分大小写) 。 - 二进制值和十六进制值的字符串表示形式。
- 超出
Decimal128范围的值:(-1*10^(38 - S), 1*10^(38 - S))。
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 38 之间的 scale 参数,用于指定数值的小数部分可包含的位数。UInt8
NULL。Decimal128(S) 或 NULL
示例
使用示例
Query
Response
toDecimal128OrZero
引入版本:v20.1.0 将输入值转换为 Decimal(38, S) 类型的值;如果出错,则返回0。
与 toDecimal128 类似,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
0) :
- Float* 值
NaN和Inf,或其字符串表示形式 (不区分大小写) 。 - 二进制值和十六进制值的字符串表示形式。
如果输入值超出
Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),函数将返回 0。expr— 返回数字或数值字符串表示形式的表达式。ExpressionS— 取值范围为 0 到 38 的 scale 参数,用于指定数字的小数部分最多可以有多少位。UInt8
0。Decimal128(S)
示例
基本用法
Query
Response
toDecimal256
引入版本:v20.8.0 将输入值转换为带有S 标度的 Decimal(76, S) 类型的值。出错时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
- Float* 值
NaN和Inf及其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal256('0xc0fe', 1);。
如果
expr 的值超出 Decimal256 的取值范围:(-1*10^(76 - S), 1*10^(76 - S)),则可能发生溢出。
小数部分中过多的数字会被截去 (不进行舍入) 。
整数部分位数过多将导致异常。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 76 之间的 scale 参数,指定数值的小数部分可包含的位数。UInt8
Decimal(76, S) 类型的值。Decimal256(S)
示例
使用示例
Query
Response
toDecimal256OrDefault
引入版本:v21.11.0 与toDecimal256 类似,此函数会将输入值转换为 Decimal(76, S) 类型的值,但如果发生错误,则返回默认值。
语法
expr— 数字的String表示形式。StringS— 介于 0 到 76 之间的 scale 参数,用于指定数字的小数部分可以有多少位。UInt8default— 可选。如果解析为 Decimal256(S) 类型失败,则返回该默认值。Decimal256(S)
Decimal(76, S) 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Decimal256(S)
示例
转换成功
Query
Response
Query
Response
toDecimal256OrNull
引入版本:v20.8.0 将输入值转换为Decimal(76, S) 类型的值,但如果出错则返回 NULL。
与 toDecimal256 类似,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
NULL) :
- Float* 类型的
NaN和Inf值,或其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式。
- 超出
Decimal256范围的值:(-1 * 10^(76 - S), 1 * 10^(76 - S))。
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 取值范围为 0 到 76 的 scale 参数,用于指定数值的小数部分最多可以有多少位。UInt8
Decimal(76, S) 值,否则返回 NULL。Decimal256(S) 或 NULL
示例
使用示例
Query
Response
toDecimal256OrZero
引入版本:v20.8.0 将输入值转换为 Decimal(76, S) 类型的值,但如果发生错误则返回0。
与 toDecimal256 类似,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
0) :
- Float* 值
NaN和Inf,以及它们的字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式。
如果输入值超出
Decimal256 的范围:(-1*10^(76 - S), 1*10^(76 - S)),函数将返回 0。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 76 之间的 scale 参数,用于指定数值的小数部分最多可包含多少位数字。UInt8
0。Decimal256(S)
示例
用法示例
Query
Response
toDecimal32
引入版本:v18.12.0 将输入值转换为Decimal(9, S) 类型、标度为 S 的值。出错时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
- Float* 值
NaN和Inf及其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal32('0xc0fe', 1);。
如果
expr 的值超出 Decimal32 的范围:(-1*10^(9 - S), 1*10^(9 - S)),则可能发生溢出。
小数部分中多余的数字会被截去 (不进行四舍五入) 。
整数部分中多余的数字会导致抛出异常。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 取值范围为 0 到 9 的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
Decimal(9, S) 的值 Decimal32(S)
示例
使用示例
Query
Response
toDecimal32OrDefault
Introduced in:v21.11.0 与toDecimal32 类似,此函数会将输入值转换为 Decimal(9, S) 类型的值,但如果发生错误,则返回默认值。
语法
expr— 数字的String表示形式。StringS— 介于 0 到 9 之间的 scale 参数,用于指定数字的小数部分可有多少位。UInt8default— 可选。如果解析为 Decimal32(S) 类型失败,则返回此默认值。Decimal32(S)
Decimal32(S)
示例
转换成功
Query
Response
Query
Response
toDecimal32OrNull
引入版本:v20.1.0 将输入值转换为Decimal(9, S) 类型的值;如果发生错误,则返回 NULL。
与 toDecimal32 类似,但在转换出错时会返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
NULL) :
- Float* 类型的
NaN和Inf值,或其字符串表示形式 (不区分大小写) 。 - 二进制值和十六进制值的字符串表示形式。
- 超出
Decimal32取值范围的值:(-1*10^(9 - S), 1*10^(9 - S))。
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 和 9 之间的 scale 参数,指定数值的小数部分可包含的位数。UInt8
NULL。Decimal32(S) 或 NULL
示例
用法示例
Query
Response
toDecimal32OrZero
引入版本:v20.1.0 将输入值转换为 Decimal(9, S) 类型的值,但如果发生错误则返回0。
与 toDecimal32 类似,但在转换出错时会返回 0,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
0):
- Float* 值
NaN和Inf,以及它们的字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式。
如果输入值超出
Decimal32 的取值范围:(-1*10^(9 - S), 1*10^(9 - S)),则函数返回 0。expr— 返回数值或数值的字符串表示形式的表达式。ExpressionS— 介于 0 到 9 之间的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
Decimal(9, S) 值,否则返回 0。Decimal32(S)
示例
用法示例
Query
Response
toDecimal64
引入版本:v18.12.0 将输入值转换为标度为S 的 Decimal(18, S) 类型值。
出错时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
- Float* 类型的
NaN和Inf值,或其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal64('0xc0fe', 1);。
如果
expr 的值超出 Decimal64 的取值范围:(-1*10^(18 - S), 1*10^(18 - S)),则可能发生溢出。
小数部分中多余的数字会被截去 (不进行四舍五入) 。
整数部分中多余的数字会导致抛出异常。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分可以有多少位。UInt8
Decimal(18, S)
示例
使用示例
Query
Response
toDecimal64OrDefault
首次引入版本:v21.11.0 与toDecimal64 类似,此函数会将输入值转换为 Decimal(18, S) 类型的值,但如果发生错误,则返回默认值。
语法
expr— 数字的String字符串表示形式。StringS— 介于 0 到 18 之间的 scale 参数,用于指定数字的小数部分最多可有多少位。UInt8default— 可选。如果无法解析为Decimal64(S)类型,则返回此默认值。Decimal64(S)
Decimal(18, S) 类型的值;否则,如果传入了默认值则返回默认值,未传入则返回 0。Decimal64(S)
示例
成功转换
Query
Response
Query
Response
toDecimal64OrNull
引入版本:v20.1.0 将输入值转换为 Decimal(18, S) 类型的值;如果出错,则返回NULL。
与 toDecimal64 类似,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
NULL) :
- Float* 值
NaN和Inf及其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式。
- 超出
Decimal64取值范围的值:(-1*10^(18 - S), 1*10^(18 - S))。
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分可包含的位数。UInt8
NULL。Decimal64(S) 或 NULL
示例
使用示例
Query
Response
toDecimal64OrZero
引入版本:v20.1.0 将输入值转换为 Decimal(18, S) 类型的值,但如果发生错误则返回0。
与 toDecimal64 类似,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值或其字符串表示形式。
0) :
- Float* 类型的
NaN和Inf值,或其字符串表示形式 (不区分大小写) 。 - 二进制和十六进制值的字符串表示形式。
如果输入值超出
Decimal64 的取值范围:(-1*10^(18 - S), 1*10^(18 - S)),函数将返回 0。expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 18 之间的 scale 参数,用于指定数值的小数部分最多可以有多少位数字。UInt8
Decimal(18, S) 值,否则返回 0。Decimal64(S)
示例
使用示例
Query
Response
toDecimalString
引入版本:v23.3.0 将数值转换为具有指定小数位数的 String。 该函数会将输入值四舍五入到指定的小数位数。如果输入值的小数位数少于指定值, 则结果会用 0 补齐,以达到指定的确切小数位数。 语法number— 要转换为字符串的数值。可以是任意数值类型 (Int、UInt、Float、Decimal) 。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalscale— 小数部分显示的位数。必要时会对结果进行四舍五入。UInt8
String
示例
对数值进行四舍五入并格式化
Query
Response
Query
Response
Query
Response
toFixedString
引入版本:v1.1.0 将String 参数转换为 FixedString(N) 类型 (长度固定为 N 的字符串) 。
如果字符串的字节数小于 N,则会在右侧用空字节填充。
如果字符串的字节数大于 N,则会抛出异常。
语法
s— 要转换的 String。StringN— 生成的 FixedString 的长度。const UInt*
FixedString(N)
示例
使用示例
Query
Response
toFloat32
引入版本:v1.1.0 将输入值转换为 Float32 类型的值。 如果出错,则会抛出异常。 支持的参数:- (U)Int* 类型的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- Float* 类型的值,包括
NaN和Inf。 - Float* 的字符串表示形式,包括
NaN和Inf(不区分大小写) 。
- 二进制值和十六进制值的字符串表示形式,例如
SELECT toFloat32('0xc0fe');。
expr— 返回数值或数值字符串表示形式的表达式。Expression
Float32
示例
使用示例
Query
Response
toFloat32OrDefault
引入版本:v21.11.0 与toFloat32 类似,此函数会将输入值转换为 Float32 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Float32 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0。Float32
示例
转换成功
Query
Response
Query
Response
toFloat32OrNull
引入版本:v1.1.0 将输入值转换为 Float32 类型的值;如果出错,则返回NULL。
与 toFloat32 类似,但在转换出错时会返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- Float* 类型的值,包括
NaN和Inf。 - Float* 的字符串表示形式,包括
NaN和Inf(不区分大小写) 。
NULL) :
- 二进制和十六进制值的字符串表示形式,例如
SELECT toFloat32OrNull('0xc0fe');。 - 无效的字符串格式。
x— 数值的字符串表示形式。String
NULL。Float32 或 NULL
示例
使用示例
Query
Response
toFloat32OrZero
首次引入版本:v1.1.0 将输入值转换为 Float32 类型的值;如果发生错误,则返回0。
与 toFloat32 类似,但在转换出错时会返回 0,而不是抛出异常。
另请参见:
语法
x— 数字的字符串表示形式。String
0。Float32
示例
用法示例
Query
Response
toFloat64
引入版本:v1.1.0 将输入值转换为Float64 类型的值。
发生错误时会抛出异常。
支持的参数:
- (U)Int* 类型的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- Float* 类型的值,包括
NaN和Inf。 - Float* 类型的字符串表示形式,包括
NaN和Inf(不区分大小写) 。
- 二进制和十六进制值的字符串表示形式,例如
SELECT toFloat64('0xc0fe');。
expr— 返回数字或数字的字符串表示形式的表达式。Expression
Float64
示例
用法示例
Query
Response
toFloat64OrDefault
引入版本:v21.11.0 与toFloat64 类似,此函数会将输入值转换为 Float64 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则发生错误时返回 0。
语法
Float64 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Float64
示例
转换成功
Query
Response
Query
Response
toFloat64OrNull
引入版本:v1.1.0 将输入值转换为 Float64 类型的值;如果发生错误,则返回NULL。
与 toFloat64 类似,但在转换出错时会返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- Float* 类型的值,包括
NaN和Inf。 - Float* 类型的字符串表示形式,包括
NaN和Inf(不区分大小写) 。
NULL) :
- 二进制和十六进制值的字符串表示形式,例如
SELECT toFloat64OrNull('0xc0fe');。 - 无效的字符串格式。
x— 数值的字符串表示形式。String
NULL。 Float64 或 NULL
示例
使用示例
Query
Response
toFloat64OrZero
引入于:v1.1.0 将输入值转换为 Float64 类型的值;如果发生错误,则返回0。
与 toFloat64 类似,但在转换错误时会返回 0,而不是抛出异常。
另请参见:
语法
x— 数值的字符串表示形式。String
0。Float64
示例
使用示例
Query
Response
toInt128
首次引入于:v1.1.0 将输入值转换为 Int128 类型的值。 出错时会抛出异常。 该函数采用向零舍入,也就是说会截断数字的小数位。 支持的参数:(U)Int*类型的值或其字符串表示形式。Float*类型的值。
Float*值的字符串表示形式,包括NaN和Inf。- 二进制和十六进制值的字符串表示形式,例如
SELECT toInt128('0xc0fe');。
如果输入值无法在 Int128 的取值范围内表示,结果会发生上溢或下溢。
这不视为错误。
expr— 返回数值或数值字符串表示形式的表达式。Expression
Int128
示例
用法示例
Query
Response
toInt128OrDefault
引入版本:v21.11.0 与toInt128 类似,该函数会将输入值转换为 Int128 类型的值,但在发生错误时会返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Int128 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0。Int128
示例
成功转换
Query
Response
Query
Response
toInt128OrNull
Introduced in: v20.8.0 与toInt128 类似,此函数会将输入值转换为 Int128 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt128OrNull('0xc0fe');。
如果输入值超出 Int128 的可表示范围,结果会发生上溢或下溢。
这不视为错误。
x— 数字的字符串表示形式。String
NULL。Int128 或 NULL
示例
使用示例
Query
Response
toInt128OrZero
引入版本:v20.8.0 将输入值转换为 Int128 类型,但如果发生错误则返回0。
与 toInt128 类似,但返回 0 而不是抛出异常。
另请参见:
语法
0。Int128
示例
使用示例
Query
Response
Query
Response
toInt16
引入于:v1.1.0 将输入值转换为Int16 类型的值。
发生错误时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 类型值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt16('0xc0fe');。
如果输入值无法表示在 Int16 的范围内,则结果会发生上溢或下溢。
这不视为错误。
例如:
SELECT toInt16(32768) == -32768;。该函数采用向零舍入,也就是说会截去数字的小数位。
expr— 返回数值或该数值的字符串表示形式的表达式。Expression
Int16
示例
用法示例
Query
Response
toInt16OrDefault
引入版本:v21.11.0 与toInt16 类似,此函数将输入值转换为 Int16 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Int16
示例
转换成功
Query
Response
Query
Response
toInt16OrNull
引入版本:v1.1.0 与toInt16 类似,此函数将输入值转换为 Int16 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt16OrNull('0xc0fe');。
如果输入值无法表示在 Int16 的表示范围内,结果会发生上溢或下溢。
这不视为错误。
x— 数值的字符串表示形式。String
Int16 类型的值;如果转换失败,则返回 NULL。Int16 或 NULL
示例
用法示例
Query
Response
toInt16OrZero
引入版本:v1.1.0 与toInt16 类似,此函数会将输入值转换为 Int16 类型的值,但在发生错误时返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt16OrZero('0xc0fe');。
如果输入值超出 Int16 的表示范围,结果会发生上溢或下溢。
这不视为错误。
x— 数值的字符串表示形式。String
0。Int16
示例
使用示例
Query
Response
toInt256
引入版本:v1.1.0 将输入值转换为 Int256 类型的值。 如果发生错误,会抛出异常。 该函数采用向零舍入,也就是说会截去数字的小数位。 支持的参数:- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt256('0xc0fe');。
如果输入值超出 Int256 的表示范围,结果会发生上溢或下溢。
这不视为错误。
expr— 返回数字或数字的字符串表示形式的表达式。表达式
Int256
示例
使用示例
Query
Response
toInt256OrDefault
引入版本:v21.11.0 与toInt256 类似,此函数会将输入值转换为 Int256 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Int256
示例
转换成功
Query
Response
Query
Response
toInt256OrNull
引入版本:v20.8.0 与toInt256 类似,此函数会将输入值转换为 Int256 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt256OrNull('0xc0fe');。
如果输入值超出了 Int256 的表示范围,则结果会发生上溢或下溢。
这不视为错误。
x— 数字的字符串表示形式。String
NULL。Int256 或 NULL
示例
使用示例
Query
Response
toInt256OrZero
引入版本:v20.8.0 将输入值转换为 Int256 类型;如果发生错误,则返回0。
与 toInt256 类似,但会返回 0,而不是抛出异常。
另请参见:
语法
0。(Int256)
示例
用法示例
Query
Response
Query
Response
toInt32
Introduced in: v1.1.0 将输入值转换为Int32 类型的值。
出错时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 类型值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt32('0xc0fe');。
如果输入值超出 Int32 的表示范围,结果会发生上溢或下溢。
这不视为错误。
例如:
SELECT toInt32(2147483648) == -2147483648;该函数采用向零舍入,即截去数字的小数位。
expr— 返回数值或数值字符串表示形式的表达式。表达式
Int32
示例
用法示例
Query
Response
toInt32OrDefault
引入版本:v21.11.0 与toInt32 类似,此函数会将输入值转换为 Int32 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Int32
示例
转换成功
Query
Response
Query
Response
toInt32OrNull
引入版本:v1.1.0 与toInt32 类似,此函数会将输入值转换为 Int32 类型的值,但如果发生错误则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt32OrNull('0xc0fe');。
如果输入值无法在 Int32 的表示范围内表示,结果会发生上溢或下溢。
这不视为错误。
x— 数字的字符串表示形式。String
Int32 类型的值;如果转换失败,则返回 NULL。Int32 或 NULL
示例
用法示例
Query
Response
toInt32OrZero
引入版本:v1.1.0 与toInt32 类似,此函数会将输入值转换为 Int32 类型的值;如果发生错误,则返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt32OrZero('0xc0fe');。
如果输入值超出 Int32 的表示范围,结果会发生上溢或下溢。
这不视为错误。
x— 数字的字符串表示形式。String
0。Int32
示例
使用示例
Query
Response
toInt64
引入版本:v1.1.0 将输入值转换为Int64 类型的值。
如果发生错误,则会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt64('0xc0fe');。
如果输入值超出 Int64 的表示范围,结果会发生上溢或下溢。
这不视为错误。
例如:
SELECT toInt64(9223372036854775808) == -9223372036854775808;该函数使用向零舍入,即会截断数字的小数位。
expr— 返回数值或数值字符串表示形式的表达式。支持:类型为 (U)Int* 的值或其字符串表示形式,以及类型为 Float* 的值。不支持:Float* 值的字符串表示形式 (包括 NaN 和 Inf) ,以及二进制和十六进制值的字符串表示形式。表达式
Int64
示例
使用示例
Query
Response
toInt64OrDefault
引入版本:v21.11.0 与toInt64 类似,此函数会将输入值转换为 Int64 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则发生错误时返回 0。
语法
Int64
示例
成功转换
Query
Response
Query
Response
toInt64OrNull
引入版本:v1.1.0 与toInt64 类似,此函数将输入值转换为 Int64 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt64OrNull('0xc0fe');。
如果输入值超出 Int64 的表示范围,结果会发生上溢或下溢。
这不视为错误。
x— 数值的字符串表示形式。String
Int64 类型的值;如果转换失败,则返回 NULL。Int64 或 NULL
示例
使用示例
Query
Response
toInt64OrZero
引入版本:v1.1.0 将输入值转换为 Int64 类型,但如果发生错误则返回0。
与 toInt64 类似,不过它会返回 0,而不是抛出异常。
另请参见:
语法
0。Int64
示例
使用示例
Query
Response
Query
Response
toInt8
引入版本:v1.1.0 将输入值转换为Int8 类型的值。
出错时会抛出异常。
支持的参数:
(U)Int*类型的值或其字符串表示形式。Float*类型的值。
Float*值的字符串表示形式,包括NaN和Inf。- 二进制和十六进制值的字符串表示形式,例如
SELECT toInt8('0xc0fe');。
如果输入值超出 Int8 的表示范围,结果会发生上溢或下溢。
这不视为错误。
例如:
SELECT toInt8(128) == -128;。此函数使用向零舍入,即会截去数字的小数位。
expr— 返回数值或数值的字符串表示形式的表达式。表达式
Int8
示例
使用示例
Query
Response
toInt8OrDefault
首次引入版本:v21.11.0 与toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
Int8 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0。Int8
示例
转换成功
Query
Response
Query
Response
toInt8OrNull
引入版本:v1.1.0 与toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示形式,例如
SELECT toInt8OrNull('0xc0fe');。
如果输入值无法在 Int8 的表示范围内表示,结果会发生上溢或下溢。
这不视为错误。
x— 数值的字符串表示形式。String
Int8 类型的值;如果转换失败,则返回 NULL。Int8 或 NULL
示例
使用示例
Query
Response
toInt8OrZero
版本引入:v1.1.0 与toInt8 类似,此函数会将输入值转换为 Int8 类型的值,但如果出错则返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt8OrZero('0xc0fe');。
如果输入值超出 Int8 的表示范围,结果会发生上溢或下溢。
这不视为错误。
x— 数值的字符串表示形式。String
0。Int8
示例
使用示例
Query
Response
toInterval
引入版本:v25.4.0 根据数值和单位字符串创建一个 Interval 值。 该函数提供了一种统一的方法:通过将单位指定为字符串参数,用同一个函数创建不同类型的时间间隔 (秒、分钟、小时、天、周、月、季度、年) 。 单位字符串不区分大小写。 这等同于调用toIntervalSecond、toIntervalMinute、toIntervalDay 等特定类型的函数,
但允许通过字符串参数动态指定单位。
语法
value— 表示单位数量的数值,可为任意数值类型。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64unit— 时间单位。必须为常量字符串。有效值:‘nanosecond’、‘microsecond’、‘millisecond’、‘second’、‘minute’、‘hour’、‘day’、‘week’、‘month’、‘quarter’、‘year’。String
unit:IntervalNanosecond、IntervalMicrosecond、IntervalMillisecond、IntervalSecond、IntervalMinute、IntervalHour、IntervalDay、IntervalWeek、IntervalMonth、IntervalQuarter 或 IntervalYear。Interval
示例
创建不同单位的时间间隔
Query
Response
Query
Response
Query
Response
toIntervalDay
在 v1.1.0 中引入 返回一个由n 天组成、数据类型为 IntervalDay 的时间间隔。
语法
n 天的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalHour
在 v1.1.0 中引入 返回一个表示n 小时的时间间隔,数据类型为 IntervalHour。
语法
n 小时的时间间隔。Interval
示例
用法示例
Query
Response
toIntervalMicrosecond
引入版本:v22.6.0 返回一个由n 微秒组成的时间间隔,数据类型为 IntervalMicrosecond。
语法
n 微秒构成的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalMillisecond
引入版本:v22.6.0 返回一个n 毫秒的时间间隔,数据类型为 IntervalMillisecond。
语法
n 毫秒的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalMinute
引入版本:v1.1.0 返回一个表示n 分钟的时间间隔,数据类型为 IntervalMinute。
语法
n 分钟的时间间隔。Interval
示例
用法示例
Query
Response
toIntervalMonth
引入版本:v1.1.0 返回一个n 个月的时间间隔,数据类型为 IntervalMonth。
语法
n 个月的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalNanosecond
引入版本:v22.6.0 返回一个n 纳秒的时间间隔,数据类型为 IntervalNanosecond。
语法
n 纳秒的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalQuarter
在 v1.1.0 中引入 返回一个由n 个季度组成、数据类型为 IntervalQuarter 的时间间隔。
语法
n 个季度的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalSecond
引入版本:v1.1.0 返回一个由n 秒构成、数据类型为 IntervalSecond 的时间间隔。
语法
n 秒的时间间隔。Interval
示例
使用示例
Query
Response
toIntervalWeek
引入版本:v1.1.0 返回一个表示n 周的时间间隔,数据类型为 IntervalWeek。
语法
n 周的时间间隔。Interval
示例
用法示例
Query
Response
toIntervalYear
引入版本:v1.1.0 返回一个表示n 年的时间间隔,数据类型为 IntervalYear。
语法
n 年的时间间隔。Interval
示例
使用示例
Query
Response
toLowCardinality
引入版本:v18.12.0 将输入参数转换为相同数据类型的 LowCardinality 版本。 语法LowCardinality 数据类型后的输入值。LowCardinality
示例
使用示例
Query
Response
toString
引入版本:v1.1.0 将值转换为其字符串表示形式。 对于 DateTime 类型的参数,该函数还可以接受第二个 String 类型参数,用于指定时区名称。 语法String
示例
使用示例
Query
Response
toStringCutToZero
引入版本:v1.1.0 接受一个 String 或 FixedString 类型的参数,并返回一个 String,该 String 是在第一个空字节处截断后的原始字符串副本。 空字节 (\0) 被视为字符串终止符。 当空字节用于标记有效内容的结尾时,此函数可用于处理 C 风格字符串或二进制数据。 语法s— 要处理的 String 或 FixedString。String或FixedString
String
示例
使用示例
Query
Response
toTime
引入版本:v25.5.0 将输入值转换为 Time 类型。 支持从 String、FixedString、DateTime、DateTime64、Time64 或表示自午夜起经过秒数的数值类型进行转换。 超出该类型范围的数值 (-999:59:59 至 999:59:59,即 -3599999 至 3599999 秒) 将被限制在范围边界内;非有限浮点值 (NaN、inf、-inf) 无法转换,并会引发异常。
Time64 值会向负无穷方向取整到整秒,并同样被限制在该范围内。
在 v25.5 之前,
toTime 是另一个函数,用于将日期时间转换为固定日期 (1970-01-02) ,同时保留
时间部分。该函数仍以 toTimeWithFixedDate 的名称提供。将 use_legacy_to_time 设置为 1,也会使 toTime 名称仍绑定到旧版
函数;即对 toTime 的调用会解析为 toTimeWithFixedDate,而非此处所述的转换函数。
启用该设置时,请使用 CAST(x AS Time) 或 x::Time 转换为 Time 类型。
自 v26.7 起,该设置默认值为 0,但在 v25.6 至 v26.6 期间默认值为 1,因此以下示例会显式设置该值。x— 要转换的输入值。String或FixedString或DateTime或DateTime64或Time64或(U)Int*或BFloat16或Float*
Time
示例
DateTime64 转换为 Time
Query
Response
Query
Response
Query
Response
toTime64
引入版本:v25.6.0 将输入值转换为 Time64 类型。 支持从 String、FixedString、DateTime64,或表示自午夜起经过秒数的数值类型进行转换。 可为时间值提供子秒级精度,最多支持scale 位小数。
语法
x— 要转换的输入值。String或FixedString或DateTime64或(U)Int*或Float*scale— 结果Time64的精度 (小数位数,0–9) 。(U)Int*
scale 转换后的值。Time64
示例
将 String 转换为 Time64
Query
Response
Query
Response
Query
Response
toTime64OrNull
引入版本:v25.6.0 将输入值转换为Time64 类型的值;如果发生错误,则返回 NULL。
与 toTime64 类似,但在转换出错时会返回 NULL,而不是抛出异常。
另请参见:
语法
Time64 值,否则返回 NULL。Time64 或 NULL
示例
用法示例
Query
Response
toTime64OrZero
引入版本:v25.6.0 将输入值转换为Time64 类型的值;如果参数无效,则返回零 Time64 值 (00:00:00) 。
与 toTime64 相同,但如果参数无效,则返回零 Time64 值。
另请参阅:
语法
00:00:00) 。Time64
示例
用法示例
Query
Response
toTimeOrNull
引入版本:v25.5.0 将输入值转换为 Time 类型的值;如果发生错误,则返回NULL。
与 toTime 类似,但在转换出错时会返回 NULL,而不是抛出异常。
另请参见:
语法
x— 时间的字符串表示形式。String
Time 值,否则返回 NULL。Time 或 NULL
示例
使用示例
Query
Response
toTimeOrZero
Introduced in: v25.5.0 将输入值转换为Time 类型的值;如果出错,则返回 00:00:00。
与 toTime 类似,但在转换出错时会返回 00:00:00,而不是抛出异常。
Syntax
x— 时间的字符串表示形式。String
00:00:00。Time
示例
使用示例
Query
Response
toUInt128
引入版本:v1.1.0 将输入值转换为UInt128 类型的值。
出错时会抛出异常。
该函数采用向零舍入,即会截断数字的小数位。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128('0xc0fe');。
如果输入值超出 UInt128 的表示范围,结果会发生上溢或下溢。
这不被视为错误。
expr— 返回数值或数值字符串表示形式的表达式。表达式
UInt128
示例
用法示例
Query
Response
toUInt128OrDefault
引入版本:v21.11.0 与toUInt128 类似,此函数会将输入值转换为 UInt128 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
UInt128
示例
转换成功
Query
Response
Query
Response
toUInt128OrNull
引入版本:v21.6.0 与toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在发生错误时会返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128OrNull('0xc0fe');。
如果输入值无法在
UInt128 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 数字的字符串表示形式。String
NULL。UInt128 或 NULL
示例
使用示例
Query
Response
toUInt128OrZero
引入版本:v1.1.0 与toUInt128 类似,此函数会将输入值转换为 UInt128 类型的值,但如果发生错误则返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128OrZero('0xc0fe');。
如果输入值超出
UInt128 的表示范围,结果会发生上溢或下溢。
这不视为错误。x— 数字的字符串表示形式。String
0。UInt128
示例
使用示例
Query
Response
toUInt16
引入版本:v1.1.0 将输入值转换为UInt16 类型的值。
发生错误时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt16('0xc0fe');。
如果输入值无法在
UInt16 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toUInt16(65536) == 0;。该函数采用向零舍入,即会截断数字的小数位。
expr— 返回数值或数值的字符串表示形式的表达式。表达式
UInt16
示例
使用示例
Query
Response
toUInt16OrDefault
Introduced in:v21.11.0 与toUInt16 类似,此函数会将输入值转换为 UInt16 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
Syntax
UInt16 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt16
示例
转换成功
Query
Response
Query
Response
toUInt16OrNull
Introduced in: v1.1.0 与toUInt16 类似,此函数会将输入值转换为 UInt16 类型的值,但如果发生错误则返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt16OrNull('0xc0fe');。
如果输入值超出
UInt16 的表示范围,则结果会发生上溢或下溢。
这不视为错误。x— 数字的字符串表示形式。String
UInt16 类型的值;如果转换失败,则返回 NULL。UInt16 或 NULL
示例
使用示例
Query
Response
toUInt16OrZero
引入于:v1.1.0 与toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在发生错误时会返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
0) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt16OrZero('0xc0fe');。
如果输入值超出了
UInt16 的可表示范围,则结果会发生上溢或下溢。
这不视为错误。x— 数值的字符串表示形式。String
0。UInt16
示例
使用示例
Query
Response
toUInt256
在 v1.1.0 中引入 将输入值转换为 UInt256 类型的值。 出错时会抛出异常。 该函数采用向零舍入,也就是说会截断数字的小数位。 支持的参数:- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt256('0xc0fe');。
如果输入值无法在 UInt256 的取值范围内表示,结果会发生上溢或下溢。
这不被视为错误。
expr— 返回数值或数值字符串表示形式的表达式。Expression
UInt256
示例
使用示例
Query
Response
toUInt256OrDefault
引入版本:v21.11.0 与toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
UInt256
示例
转换成功
Query
Response
Query
Response
toUInt256OrNull
引入版本:v20.8.0 与toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示形式,例如
SELECT toUInt256OrNull('0xc0fe');。
如果输入值无法在
UInt256 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 数字的字符串表示形式。String
UInt256 类型的值;如果转换失败,则返回 NULL。UInt256 或 NULL
示例
使用示例
Query
Response
toUInt256OrZero
引入于:v20.8.0 与toUInt256 类似,此函数会将输入值转换为 UInt256 类型的值,但如果发生错误,则返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt256OrZero('0xc0fe');。
如果输入值超出
UInt256 的可表示范围,结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
0。UInt256
示例
使用示例
Query
Response
toUInt32
引入于:v1.1.0 将输入值转换为UInt32 类型的值。
如果出错,则会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示形式,例如
SELECT toUInt32('0xc0fe');。
如果输入值无法用
UInt32 的取值范围表示,结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toUInt32(4294967296) == 0;该函数使用向零舍入,即会截去数字的小数位。
expr— 返回数值或数值字符串表示形式的表达式。Expression
UInt32
示例
用法示例
Query
Response
toUInt32OrDefault
Introduced in: v21.11.0 与toUInt32 类似,此函数会将输入值转换为 UInt32 类型的值,但发生错误时会返回默认值。
如果未传入 default 值,则发生错误时返回 0。
Syntax
UInt32 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt32
示例
转换成功
Query
Response
Query
Response
toUInt32OrNull
引入于:v1.1.0 与toUInt32 类似,此函数会将输入值转换为 UInt32 类型的值,但如果发生错误,则返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt32OrNull('0xc0fe');。
如果输入值无法在
UInt32 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
UInt32 类型的值;如果转换失败,则返回 NULL。UInt32 或 NULL
示例
使用示例
Query
Response
toUInt32OrZero
引入版本:v1.1.0 与toUInt32 类似,此函数将输入值转换为 UInt32 类型的值,但如果发生错误,则返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
0) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt32OrZero('0xc0fe');。
如果输入值无法在
UInt32 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
0。UInt32
示例
使用示例
Query
Response
toUInt64
引入版本:v1.1.0 将输入值转换为UInt64 类型的值。
发生错误时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt64('0xc0fe');。
如果输入值超出
UInt64 的取值范围,结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toUInt64(18446744073709551616) == 0;该函数使用向零舍入,即会截断数字的小数位。
expr— 返回数字或数字的字符串表示形式的表达式。Expression
UInt64
示例
使用示例
Query
Response
toUInt64OrDefault
首次引入版本:v21.11.0 与toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则发生错误时返回 0。
语法
UInt64
示例
转换成功
Query
Response
Query
Response
toUInt64OrNull
引入于:v1.1.0 与toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
NULL) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt64OrNull('0xc0fe');。
如果输入值无法在
UInt64 的取值范围内表示,结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
UInt64 类型的值;如果转换失败,则返回 NULL。UInt64 或 NULL
示例
使用示例
Query
Response
toUInt64OrZero
引入版本:v1.1.0 与toUInt64 类似,此函数会将输入值转换为 UInt64 类型的值,但如果发生错误,则返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
0) :
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt64OrZero('0xc0fe');。
如果输入值无法表示在
UInt64 的范围内,结果会发生上溢或下溢。
这不视为错误。x— 数字的字符串表示形式。String
UInt64 类型的值;如果转换失败,则返回 0。UInt64
示例
使用示例
Query
Response
toUInt8
Introduced in: v1.1.0 将输入值转换为UInt8 类型的值。
发生错误时会抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示形式。
- Float* 类型的值。
- Float* 类型值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt8('0xc0fe');。
如果输入值无法在 UInt8 的范围内表示,结果会发生上溢或下溢。
这不视为错误。
例如:
SELECT toUInt8(256) == 0;。该函数采用 向零舍入,即截断数字的小数位。
expr— 返回数字或数字的字符串表示形式的表达式。Expression
UInt8
示例
使用示例
Query
Response
toUInt8OrDefault
Introduced in:v21.11.0 与toUInt8 类似,此函数会将输入值转换为 UInt8 类型的值,但如果发生错误,则返回默认值。
如果未传入 default 值,则发生错误时返回 0。
Syntax
UInt8 类型的值;否则,如果传入了默认值,则返回该默认值;如果未传入,则返回 0。UInt8
示例
转换成功
Query
Response
Query
Response
toUInt8OrNull
引入版本:v1.1.0 与toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
NULL) :
- 普通 Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt8OrNull('0xc0fe');。
如果输入值无法在
UInt8 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
NULL。UInt8 或 NULL
示例
使用示例
Query
Response
toUInt8OrZero
首次引入于:v1.1.0 与toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在发生错误时返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
0) :
- 普通 Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt8OrZero('0xc0fe');。
如果输入值无法在
UInt8 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。x— 字符串表示形式。String
0。UInt8
示例
用法示例
Query
Response
toUUID
引入版本:v1.1.0 将 String 类型的值转换为 UUID 值。 语法string— 字符串形式的 UUID。String或FixedString
UUID
示例
使用示例
Query
Response
toUUIDOrZero
Introduced in: v20.12.0 将输入值转换为 UUID 类型的值,但如果发生错误,则返回零 UUID。 与toUUID 类似,但在转换出错时会返回零 UUID (00000000-0000-0000-0000-000000000000) ,而不是抛出异常。
支持的参数:
- 标准格式 UUID 的字符串表示形式 (8-4-4-4-12 个十六进制数字) 。
- 不带连字符的 UUID 字符串表示形式 (32 个十六进制数字) 。
- 无效的字符串格式。
- 非字符串类型。
x— UUID 的字符串表示形式。String
00000000-0000-0000-0000-000000000000) 。UUID
示例
使用示例
Query
Response
toUnixTimestamp64Micro
引入版本:v20.5.0 将DateTime64 转换为具有固定微秒精度的 Int64 值。
输入值会根据其精度相应地进行放大或缩小。
输出值以 UTC 为基准,而不是以输入值的时区为基准。
value— 任意精度的 DateTime64 类型值。DateTime64
Int64
示例
使用示例
Query
Response
toUnixTimestamp64Milli
引入版本:v20.5.0 将DateTime64 转换为具有固定毫秒精度的 Int64 值。
输入值会根据其精度按相应比例放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
value— 具有任意精度的 DateTime64 值。DateTime64
Int64
示例
用法示例
Query
Response
toUnixTimestamp64Nano
引入版本:v20.5.0 将DateTime64 转换为具有固定纳秒精度的 Int64 值。
输入值会根据其精度相应放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
value— 任意精度的 DateTime64 值。DateTime64
Int64
示例
使用示例
Query
Response
toUnixTimestamp64Second
引入版本:v24.12.0 将DateTime64 转换为具有固定秒级精度的 Int64 值。
输入值会根据其精度相应按比例放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
value— 任意精度的 DateTime64 类型值。DateTime64
Int64
示例
使用示例
Query
Response