类型转换函数
数据转换的常见问题
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函数可以接收第二个字符串参数,其中包含时区名称,例如:Europe/Amsterdam。在这种情况下,时间将按照指定的时区进行格式化。
关于 toDate/toDateTime 函数的说明
toDate/toDateTime 函数的日期和日期时间格式定义如下:
作为一个例外,当从 UInt32、Int32、UInt64 或 Int64 数值类型转换为 Date 时,如果该数值大于或等于 65536,则该数值会被解释为 Unix 时间戳(而不是天数),并被舍入到对应的日期。
这使得常见的写法 toDate(unix_timestamp) 得到支持,否则会报错,并且需要改为更繁琐的写法 toDate(toDateTime(unix_timestamp))。
日期与带时间的日期之间的转换是以自然方式执行的:要么添加零时间(00:00:00),要么丢弃时间部分。
数值类型之间的转换遵循与 C++ 中不同数值类型之间赋值相同的规则。
示例
查询:
结果:
另请参阅 toUnixTimestamp 函数。
toBool
将输入值转换为 Bool 类型的值。出现错误时抛出异常。
语法
参数
expr— 返回数字或字符串的表达式。表达式。
支持的参数类型:
- 类型为 (U)Int8/16/32/64/128/256 的值。
- 类型为 Float32/64 的值。
- 字符串
true或false(不区分大小写)。
返回值
- 根据对参数的求值结果返回
true或false。Bool。
示例
查询:
结果:
toInt8
将输入值转换为 Int8 类型的值。发生错误时会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt8('0xc0fe');。
如果输入值无法在 Int8 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toInt8(128) == -128;。
返回值
- 8 位整数值。Int8。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt8OrZero
与 toInt8 类似,此函数将输入值转换为 Int8 类型的值,但在发生错误时返回 0。
语法
参数
x— 数字的字符串表示。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- 普通 Float32/64 浮点数值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制数值的字符串表示,例如
SELECT toInt8OrZero('0xc0fe');。
如果输入值无法在 Int8 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 8 位整数值,否则返回
0。Int8。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt8OrNull
类似于 toInt8,此函数将输入值转换为 Int8 类型的值,但在出错时会返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt8OrNull('0xc0fe');。
如果输入值不能在 Int8 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt8OrDefault
与 toInt8 类似,此函数将输入值转换为 Int8 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串形式的表达式。Expression / String。default(可选)— 当解析为Int8类型失败时要返回的默认值。Int8。
支持的参数类型:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
会返回默认值的情况:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt8OrDefault('0xc0fe', CAST('-1', 'Int8'));。
如果输入值无法在 Int8 的取值范围内表示,则结果会发生上溢出或下溢出。 这不被视为错误。
返回值
- 成功时返回 8 位整数值,否则返回传入的默认值,如果未传入则返回
0。Int8。
- 该函数使用向零舍入,这意味着它会截断数字的小数部分。
- 默认值的类型应与转换目标类型相同。
示例
查询:
结果:
另请参阅
toInt16
将输入值转换为 Int16 类型的值。在出错时抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串形式,例如
SELECT toInt16('0xc0fe');。
如果输入值无法在 Int16 的范围内表示,则结果会发生溢出或下溢。
这不视为错误。
例如:SELECT toInt16(32768) == -32768;。
返回值
- 16 位整数值。Int16。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt16OrZero
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在发生错误时返回 0。
语法
参数
x— 数值的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt16OrZero('0xc0fe');。
如果输入值无法在 Int16 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
- 成功时返回 16 位整数值,否则返回
0。Int16。
该函数使用向零舍入,也就是说,它会截断数值的小数部分。
示例
查询:
结果:
另请参阅
toInt16OrNull
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在出错时会返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt16OrNull('0xc0fe');。
如果输入值无法在 Int16 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt16OrDefault
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Int16类型失败时返回的默认值。Int16。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
会返回默认值的参数情况:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt16OrDefault('0xc0fe', CAST('-1', 'Int16'));。
如果输入值无法在 Int16 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 16 位整数值,否则返回传入的默认值;如果未传入则返回
0。Int16。
- 该函数使用向零舍入,即截断数字的小数部分。
- 默认值的类型应与转换的目标类型相同。
示例
查询:
结果:
另请参阅
toInt32
将输入值转换为 Int32 类型的值。如果发生错误,则会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt32('0xc0fe');。
如果输入值不能在 Int32 的范围内表示,则结果会产生上溢或下溢。
这不被视为错误。
例如:SELECT toInt32(2147483648) == -2147483648;
返回值
- 32 位整数值。Int32。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt32OrZero
与 toInt32 类似,此函数将输入值转换为 Int32 类型的值,但如果发生错误则返回 0。
语法
参数
x— 数字的字符串形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串形式。
不支持的参数(返回 0):
- Float32/64 值的字符串形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串形式,例如
SELECT toInt32OrZero('0xc0fe');。
如果输入值无法在 Int32 的取值范围内表示,则结果会发生溢出或下溢。 这不被视为错误。
返回值
- 成功时为 32 位整数值,否则为
0。Int32
该函数使用向零舍入,也就是说会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt32OrNull
与 toInt32 类似,该函数将输入值转换为 Int32 类型的值,但在出错时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt32OrNull('0xc0fe');。
如果输入值不能在 Int32 的范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
返回值
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt32OrDefault
与 toInt32 类似,此函数将输入值转换为 Int32 类型的值,但在发生错误时返回默认值。
如果未传入 default 参数,则在发生错误时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Int32类型失败时要返回的默认值。Int32。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的数值或其字符串表示。
- 类型为 Float32/64 的浮点数。
在以下情况下会返回默认值:
- Float32/64 数值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt32OrDefault('0xc0fe', CAST('-1', 'Int32'));。
如果输入值不能在 Int32 的取值范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
返回值
- 转换成功时返回 32 位整数值,否则在传入默认值时返回该默认值;如果未传入默认值,则返回
0。Int32。
- 该函数使用向零舍入,即截断数字的小数部分。
- 默认值的类型应与目标转换类型相同。
示例
查询:
结果:
另请参阅
toInt64
将输入值转换为 Int64 类型的值。出错时会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。表达式。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
不支持的类型:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt64('0xc0fe');。
如果输入值无法在 Int64 的范围内表示,结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toInt64(9223372036854775808) == -9223372036854775808;
返回值
- 64 位整数值。Int64。
该函数使用向零舍入方式,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt64OrZero
与 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但在发生错误时返回 0。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- Int8/16/32/128/256 及其无符号类型 (UInt8/16/32/128/256) 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt64OrZero('0xc0fe');。
如果输入值不能在 Int64 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 64 位整数值,否则返回
0。Int64。
该函数采用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt64OrNull
与 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串形式。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串形式,例如
SELECT toInt64OrNull('0xc0fe');。
如果输入值无法在 Int64 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入,也就是说,它会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt64OrDefault
与 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Int64类型失败时返回的默认值。Int64。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的数值。
以下情况将返回默认值:
- Float32/64 数值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt64OrDefault('0xc0fe', CAST('-1', 'Int64'));。
如果输入值无法在 Int64 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 64 位整数值,否则返回传入的默认值;如果未传入默认值则返回
0。Int64。
- 该函数使用向零舍入,即会截断数值的小数部分。
- 默认值的类型应与转换的目标类型相同。
示例
查询:
结果:
另请参阅
toInt128
将输入值转换为 Int128 类型的值。发生错误时抛出异常。
语法
参数
expr— 返回数值或其字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt128('0xc0fe');。
如果输入值无法在 Int128 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 128 位整数值。Int128。
该函数使用向零舍入,即会截断数值的小数部分。
示例
查询:
结果:
另请参阅
toInt128OrZero
与 toInt128 类似,此函数将输入值转换为 Int128 类型的值,但在发生错误时返回 0。
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt128OrZero('0xc0fe');。
如果输入值不能在 Int128 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
- 成功时返回 128 位整数值,否则返回
0。Int128。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt128OrNull
与 toInt128 类似,此函数将输入值转换为 Int128 类型的值,如果发生错误则返回 NULL。
语法
参数
x— 表示数字的字符串。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 表示二进制和十六进制值的字符串,例如
SELECT toInt128OrNull('0xc0fe');。
如果输入值无法在 Int128 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另见
toInt128OrDefault
与 toInt128 类似,此函数将输入值转换为 Int128 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Int128类型失败时要返回的默认值。Int128。
支持的参数类型:
- (U)Int8/16/32/64/128/256。
- Float32/64。
- (U)Int8/16/32/128/256 的字符串表示形式。
会返回默认值的参数类型:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt128OrDefault('0xc0fe', CAST('-1', 'Int128'));。
如果输入值无法在 Int128 的取值范围内表示,则结果会发生溢出或下溢。 这不会被视为错误。
返回值
- 如果转换成功则返回 128 位整数值,否则返回传入的默认值;如果未传入默认值则返回
0。Int128。
- 该函数使用向零舍入方式,也就是说会截断数字的小数部分。
- 默认值的类型应与转换的目标类型相同。
示例
查询:
结果:
另请参阅
toInt256
将输入值转换为 Int256 类型的值。在出错时会抛出异常。
语法
参数
expr— 返回数字或数字字符串形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串形式,例如
SELECT toInt256('0xc0fe');。
如果输入值无法在 Int256 的范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
返回值
- 256 位整数值。Int256。
该函数使用向零舍入,也就是说,它会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt256OrZero
与 toInt256 类似,此函数将输入值转换为 Int256 类型的值,但在发生错误时返回 0。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt256OrZero('0xc0fe');。
如果输入值不能在 Int256 的取值范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
返回值
- 成功时为 256 位整数值,否则为
0。Int256。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt256OrNull
与 toInt256 类似,此函数将输入值转换为 Int256 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toInt256OrNull('0xc0fe');。
如果输入值不能在 Int256 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
该函数使用 向零舍入,也就是说,它会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toInt256OrDefault
与 toInt256 类似,此函数将输入值转换为 Int256 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当转换为Int256类型失败时返回的默认值。Int256。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
会返回默认值的情况:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt256OrDefault('0xc0fe', CAST('-1', 'Int256'));。
如果输入值无法在 Int256 的范围内表示,则结果会发生溢出或下溢。 这不被视为错误。
返回值
- 如果成功,则返回 256 位整数值;否则,如果传入了默认值则返回默认值,未传入则返回
0。Int256。
- 该函数使用向零舍入,即会截断数字的小数部分。
- 默认值的类型应与转换目标类型相同。
示例
查询:
结果:
另请参阅
toUInt8
将输入值转换为 UInt8 类型的值。出错时抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。表达式。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt8('0xc0fe');。
如果输入值无法在 UInt8 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toUInt8(256) == 0;。
返回值
- 8 位无符号整数值。UInt8。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt8OrZero
与 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在发生错误时返回 0。
语法
参数
x— 数字的字符串形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- 常规 Float32/64 浮点值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt8OrZero('0xc0fe');。
如果输入值无法在 UInt8 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 8 位无符号整数值,否则返回
0。UInt8。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt8OrNull
与 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回 NULL。
语法
参数
x— 数值的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt8OrNull('0xc0fe');。
如果输入值无法在 UInt8 的取值范围内表示,将会导致结果发生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入策略,即会截断数值的小数部分。
示例
查询:
结果:
另请参阅
toUInt8OrDefault
与 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回默认值。
如果未传入 default 参数,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 如果解析为UInt8类型失败时要返回的默认值。UInt8。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
将返回默认值的情况:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt8OrDefault('0xc0fe', CAST('0', 'UInt8'));。
如果输入值无法在 UInt8 的范围内表示,则会发生结果的上溢或下溢。 这不会被视为错误。
返回值
- 如果解析成功,则返回 8 位无符号整数值;否则返回传入的默认值,如果未传入默认值则返回
0。UInt8。
- 该函数使用向零舍入,即截断数字的小数部分。
- 默认值的类型应与目标类型相同。
示例
查询:
结果:
另请参阅
toUInt16
将输入值转换为 UInt16 类型的值。如果出错则抛出异常。
语法
参数
expr— 返回数字或数字字符串形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt16('0xc0fe');。
如果输入值无法在 UInt16 的范围内表示,则结果会发生溢出或下溢。
这不被视为错误。
例如:SELECT toUInt16(65536) == 0;。
返回值
- 16 位无符号整数值。UInt16。
该函数使用向零舍入,即会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt16OrZero
与 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在发生错误时返回 0。
语法
参数
x— 数值的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt16OrZero('0xc0fe');。
如果输入值无法在 UInt16 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
- 成功时返回 16 位无符号整数值,否则返回
0。UInt16。
该函数使用向零舍入,也就是说它会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt16OrNull
与 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toUInt16OrNull('0xc0fe');。
如果输入值不能在 UInt16 的取值范围内表示,则结果会产生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入,即直接截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt16OrDefault
与 toUInt16 类似,此函数将输入值转换为类型为 UInt16 的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为UInt16类型失败时要返回的默认值。UInt16。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
以下情况会返回默认值:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt16OrDefault('0xc0fe', CAST('0', 'UInt16'));。
如果输入值不能在 UInt16 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 16 位无符号整数值,否则返回传入的默认值;如果未传入,则返回
0。UInt16。
- 该函数使用向零舍入,即截断数字的小数部分。
- 默认值的类型应与转换的目标类型相同。
示例
查询:
结果:
另请参阅
toUInt32
将输入值转换为 UInt32 类型的值。如果发生错误,则抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt32('0xc0fe');。
如果输入值无法在 UInt32 的范围内表示,结果会发生上溢或下溢。
这不会被视为错误。
例如:SELECT toUInt32(4294967296) == 0;
返回值
- 32 位无符号整数值。UInt32。
该函数使用向零舍入,也就是说会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt32OrZero
与 toUInt32 类似,此函数将输入值转换为 UInt32 类型的值,但在出错时返回 0。
语法
参数
x— 数值的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt32OrZero('0xc0fe');。
如果输入值不能在 UInt32 的范围内表示,则结果会发生溢出或下溢。 这不被视为错误。
返回值
- 成功时返回 32 位无符号整数值,否则返回
0。UInt32
该函数使用向零舍入 方式,即截断数值的小数部分。
示例
查询:
结果:
另请参阅
toUInt32OrNull
类似于 toUInt32,此函数将输入值转换为 UInt32 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt32OrNull('0xc0fe');。
如果输入值不能在 UInt32 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
该函数使用向零舍入,这意味着它会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt32OrDefault
与 toUInt32 类似,此函数将输入值转换为 UInt32 类型的值,但在发生错误时返回默认值。
如果未传递 default 参数,则在发生错误时返回 0。
语法
参数
expr— 返回数字或数字字符串形式的表达式。Expression / String。default(可选)— 当解析为UInt32类型失败时要返回的默认值。UInt32。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
会返回默认值的情况:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt32OrDefault('0xc0fe', CAST('0', 'UInt32'));。
如果输入值无法在 UInt32 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 32 位无符号整数值,否则返回传入的默认值,如果未传入则返回
0。UInt32。
- 该函数使用向零舍入,也就是说会截断数字的小数部分。
- 默认值的类型应与转换的目标类型相同。
示例
查询:
结果:
另请参阅
toUInt64
将输入值转换为 UInt64 类型的值。出错时抛出异常。
语法
参数
expr— 返回数值或其字符串表示的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
不支持的类型:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt64('0xc0fe');。
如果输入值不能在 UInt64 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
例如:SELECT toUInt64(18446744073709551616) == 0;
返回值
- 64 位无符号整数值。UInt64。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt64OrZero
与 toUInt64 类似,该函数将输入值转换为 UInt64 类型的值,但在出错时返回 0。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt64OrZero('0xc0fe');。
如果输入值无法在 UInt64 的取值范围内表示,则结果会发生溢出(上溢或下溢)。 这不被视为错误。
返回值
- 成功时为 64 位无符号整数值,否则为
0。UInt64。
该函数使用向零舍入,这意味着会截断数值的小数部分。
示例
查询:
结果:
另请参阅
toUInt64OrNull
与 toUInt64 类似,此函数将输入值转换为 UInt64 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt64OrNull('0xc0fe');。
如果输入值无法在 UInt64 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt64OrDefault
与 toUInt64 类似,此函数将输入值转换为 UInt64 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression / String。defauult(可选)— 当解析为UInt64类型失败时要返回的默认值。UInt64。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
会返回默认值的参数情况:
- Float32/64 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt64OrDefault('0xc0fe', CAST('0', 'UInt64'));。
如果输入值不能在 UInt64 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 如果转换成功,则返回 64 位无符号整数值;否则返回传入的默认值,如果未传入则返回
0。UInt64。
- 该函数使用向零舍入,即截断数字的小数部分。
- 默认值的类型应与目标转换类型相同。
示例
查询:
结果:
另请参阅
toUInt128
将输入值转换为 UInt128 类型的值。如果发生错误,会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。表达式。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128('0xc0fe');。
如果输入值无法在 UInt128 的范围内表示,结果会发生上溢或下溢。 这不被视为错误。
返回值
- 128 位无符号整数值。UInt128。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt128OrZero
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在发生错误时返回 0。
语法
参数
expr— 返回数字或表示数字的字符串的表达式。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 类型值的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128OrZero('0xc0fe');。
如果输入值无法在 UInt128 的取值范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
返回值
- 如果转换成功,则返回 128 位无符号整数值,否则返回
0。UInt128。
该函数使用向零舍入方式,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt128OrNull
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在出错时返回 NULL。
语法
参数
x— 数值的字符串表示形式。Expression / String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128OrNull('0xc0fe');。
如果输入值不能在 UInt128 的范围内表示,结果会发生上溢或下溢。 这不视为错误。
返回值
该函数使用向零舍入方式,也就是说会截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt128OrDefault
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在出错时返回默认值。
如果未提供 default 值,则出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为UInt128类型失败时要返回的默认值。UInt128。
支持的参数:
- (U)Int8/16/32/64/128/256。
- Float32/64。
- (U)Int8/16/32/128/256 的字符串表示形式。
会返回默认值的参数:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示形式,例如:
SELECT toUInt128OrDefault('0xc0fe', CAST('0', 'UInt128'));。
如果输入值无法在 UInt128 的取值范围内表示,则结果会发生溢出或下溢。 这不会被视为错误。
返回值
- 成功时返回 128 位无符号整数值;否则,如果传入了默认值则返回默认值,如果未传入则返回
0。UInt128。
- 该函数使用向零舍入,也就是说会截断数字的小数部分。
- 默认值的类型必须与目标转换类型相同。
示例
查询:
结果:
另请参阅
toUInt256
将输入值转换为 UInt256 类型的值。如果发生错误,则会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。表达式。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值。
不支持的参数:
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toUInt256('0xc0fe');。
如果输入值不能在 UInt256 的范围内表示,则结果将发生上溢或下溢。 这不被视为错误。
返回值
- 256 位无符号整数值。Int256。
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt256OrZero
与 toUInt256 类似,此函数将输入值转换为 UInt256 类型的值;如果发生错误,则返回 0。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 0):
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt256OrZero('0xc0fe');。
如果输入值无法在 UInt256 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
- 成功时返回 256 位无符号整数值,否则返回
0。UInt256。
该函数使用向零舍入的方式,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt256OrNull
与 toUInt256 类似,此函数将输入值转换为 UInt256 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示形式。
不支持的参数(返回 \N)
- Float32/64 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt256OrNull('0xc0fe');。
如果输入值无法在 UInt256 的范围内表示,则结果会发生上溢或下溢。 这不视为错误。
返回值
该函数使用向零舍入,即截断数字的小数部分。
示例
查询:
结果:
另请参阅
toUInt256OrDefault
类似于 toUInt256,此函数将输入值转换为 UInt256 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数值或其字符串表示形式的表达式。Expression / String。default(可选)— 当解析为UInt256类型失败时返回的默认值。UInt256。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值。
会返回默认值的参数情况:
- Float32/64 值的字符串表示,包括
NaN和Inf - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt256OrDefault('0xc0fe', CAST('0', 'UInt256'));
如果输入值无法在 UInt256 的范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
返回值
- 成功时返回 256 位无符号整数值,否则返回传入的默认值,如果未传入则返回
0。UInt256。
- 该函数使用向零舍入,也就是说会截断数值的小数部分。
- 默认值的类型应与转换目标类型相同。
示例
查询:
结果:
另请参见
toFloat32
将输入转换为 Float32 类型的值。发生错误时会抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。
支持的参数:
- (U)Int8/16/32/64/128/256 类型的值。
- (U)Int8/16/32/128/256 类型值的字符串表示。
- Float32/64 类型的值,包括
NaN和Inf。 - Float32/64 类型值的字符串表示,包括不区分大小写的
NaN和Inf。
不支持的参数:
- 二进制和十六进制值的字符串表示,例如
SELECT toFloat32('0xc0fe');。
返回值
- 32 位浮点数值。Float32。
示例
查询:
结果:
另请参阅
toFloat32OrZero
与 toFloat32 类似,此函数将输入值转换为 Float32 类型的值,但在发生错误时返回 0。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256 和 Float32/64 的字符串表示形式。
不支持的参数(返回 0):
- 二进制和十六进制值的字符串表示形式,例如:
SELECT toFloat32OrZero('0xc0fe');。
返回值
- 解析成功时返回 32 位 Float 值,否则返回
0。Float32。
示例
查询:
结果:
另请参阅
toFloat32OrNull
与 toFloat32 类似,此函数将输入值转换为 Float32 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256、Float32/64 的字符串表示。
不支持的参数(返回 \N):
- 二进制和十六进制值的字符串表示,例如
SELECT toFloat32OrNull('0xc0fe');。
返回值
- 成功时返回 32 位浮点值,否则返回
\N。Float32。
示例
查询:
结果:
另请参阅
toFloat32OrDefault
与 toFloat32 类似,此函数将输入值转换为 Float32 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Float32类型失败时返回的默认值。Float32。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值。
- (U)Int8/16/32/128/256 的字符串表示。
- 类型为 Float32/64 的值,包括
NaN和Inf。 - Float32/64 的字符串表示,包括
NaN和Inf(不区分大小写)。
会返回默认值的参数:
- 二进制和十六进制值的字符串表示,例如:
SELECT toFloat32OrDefault('0xc0fe', CAST('0', 'Float32'));。
返回值
- 成功时返回 32 位 Float 浮点值,否则如果传入了默认值则返回该默认值,如果未传入则返回
0。Float32。
示例
查询:
结果:
另请参阅
toFloat64
将输入值转换为 Float64 类型的值。出错时会抛出异常。
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值。
- 类型为 (U)Int8/16/32/128/256 的字符串表示形式。
- 类型为 Float32/64 的值,包括
NaN和Inf。 - 类型为 Float32/64 的字符串表示形式,包括
NaN和Inf(不区分大小写)。
不支持的参数:
- 二进制值和十六进制值的字符串表示形式,例如
SELECT toFloat64('0xc0fe');。
返回值
- 64 位浮点数值。Float64。
示例
查询:
结果:
另请参阅
toFloat64OrZero
与 toFloat64 类似,此函数将输入值转换为 Float64 类型的值,但在发生错误时返回 0。
语法
参数
x— 数值的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256、Float32/64 的字符串表示形式。
不支持的参数(返回 0):
- 二进制和十六进制值的字符串表示形式,例如
SELECT toFloat64OrZero('0xc0fe');。
返回值
- 成功时返回 64 位浮点数值,否则返回
0。Float64。
示例
查询:
结果:
另请参阅
toFloat64OrNull
与 toFloat64 类似,此函数将输入值转换为 Float64 类型的值,但在发生错误时返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- (U)Int8/16/32/128/256、Float32/64 的字符串表示形式。
不支持的参数(返回 \N):
- 二进制和十六进制值的字符串表示形式,例如
SELECT toFloat64OrNull('0xc0fe');。
返回值
- 转换成功时返回 64 位浮点值,转换失败时返回
\N。Float64。
示例
查询:
结果:
另请参阅
toFloat64OrDefault
与 toFloat64 类似,此函数将输入值转换为 Float64 类型的值,但在出错时会返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression / String。default(可选)— 当解析为Float64类型失败时返回的默认值。Float64。
支持的参数类型:
- 类型为 (U)Int8/16/32/64/128/256 的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- 类型为 Float32/64 的值,包括
NaN和Inf。 - Float32/64 的字符串表示形式,包括
NaN和Inf(不区分大小写)。
会返回默认值的情况:
- 二进制和十六进制值的字符串表示形式,例如:
SELECT toFloat64OrDefault('0xc0fe', CAST('0', 'Float64'));。
返回值
- 成功时返回 64 位浮点数值,否则返回传入的默认值;如果未传入,则返回
0。Float64。
示例
查询:
结果:
另请参阅
toBFloat16
将输入值转换为 BFloat16 类型的值。
出错时会抛出异常。
语法
参数
expr— 返回数值或其字符串表示形式的表达式。Expression。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值。
- (U)Int8/16/32/128/256 的字符串表示形式。
- 类型为 Float32/64 的值,包括
NaN和Inf。 - Float32/64 的字符串表示形式,包括
NaN和Inf(不区分大小写)。
返回值
- 16 位 brain-float 值。BFloat16。
示例
另请参阅
toBFloat16OrZero
将 String 类型的输入值转换为 BFloat16 类型的值。
如果字符串不能被解析为浮点数值,则函数返回零。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- 数值的字符串表示形式。
不支持的参数(返回 0):
- 二进制和十六进制值的字符串表示形式。
- 数值类型的值。
返回值
- 16 位 brain-float 值,否则返回
0。BFloat16。
该函数在从字符串表示转换时允许静默发生精度损失。
示例
另见
toBFloat16OrNull
将 String 类型的输入值转换为 BFloat16 类型的值,
但如果该字符串不表示浮点数值,则函数返回 NULL。
语法
参数
x— 数字的字符串表示形式。String。
支持的参数:
- 数值的字符串表示形式。
不支持的参数(返回 NULL):
- 二进制和十六进制值的字符串表示形式。
- 数值类型的值。
返回值
- 16 位 brain-float 值,否则为
NULL(\N)。BFloat16。
该函数在从字符串表示形式转换时可能会静默丢失精度。
示例
另请参阅
toDate
将参数转换为 Date 数据类型。
如果参数是 DateTime 或 DateTime64,则会将其截断,仅保留日期部分:
如果参数是 String,则会被解析为 Date 或 DateTime。如果被解析为 DateTime,则仅使用其日期部分:
如果参数是数字并且其值看起来像 UNIX 时间戳(大于 65535),则会将其解释为 DateTime,然后在当前时区截断为 Date。可以通过函数的第二个参数指定时区。截断为 Date 的结果取决于所使用的时区:
上面的示例演示了同一个 UNIX 时间戳如何在不同时区被解释为不同的日期。
如果参数是一个数字且小于 65536,则会被解释为自 1970-01-01(UNIX 纪元的第一天)以来的天数,并转换为 Date 类型。它对应于 Date 数据类型的内部数值表示。示例:
此转换与时区无关。
如果参数超出 Date 类型的取值范围,其行为由具体实现决定,可能会饱和到所支持的最大日期值,或发生溢出:
toDate 函数还可以写成以下形式:
toDateOrZero
与 toDate 相同,但在收到无效参数时返回 Date 的下界值。仅支持 String 类型的参数。
示例
查询:
结果:
toDateOrNull
与 toDate 相同,但在收到无效参数时返回 NULL。仅支持 String 类型参数。
示例
查询:
结果:
toDateOrDefault
与 toDate 类似,但在转换失败时会返回一个默认值。该默认值为第二个参数(如果提供),否则为 Date 的下边界。
语法
示例
查询:
结果:
toDateTime
将输入值转换为 DateTime。
语法
参数
如果 expr 是数字,则将其解释为自 Unix 纪元开始以来的秒数(即 Unix 时间戳)。
如果 expr 是 String,则可以将其解释为 Unix 时间戳,或日期 / 含时间日期的字符串表示。
因此,由于存在歧义,明确禁止解析较短的数字字符串表示形式(最多 4 位数字),例如字符串 '1999' 既可以表示年份(Date / DateTime 的不完整字符串表示),也可以表示 Unix 时间戳。允许解析更长的数字字符串。
返回值
- 一个 DateTime 值。DateTime
示例
查询:
结果:
toDateTimeOrZero
与 toDateTime 相同,但在收到无效参数时返回 DateTime 的下界值。仅支持 String 参数。
示例
查询:
结果:
toDateTimeOrNull
与 toDateTime 相同,但在传入无效参数时返回 NULL。仅支持 String 类型参数。
示例
查询:
结果:
toDateTimeOrDefault
类似于 toDateTime,但在转换失败时会返回一个默认值:如果指定了第三个参数,则使用该参数,否则使用 DateTime 的最小值。
语法
示例
查询:
结果:
toDate32
将参数转换为 Date32 数据类型。若值超出范围,toDate32 会返回 Date32 所支持的边界值。若参数类型为 Date,则会同时考虑 Date 类型的取值边界。
语法
参数
返回值
- 日历日期,类型为 Date32。
示例
- 值在有效范围内时:
- 数值超出有效范围:
- 当使用 Date 参数时:
toDate32OrZero
与 toDate32 相同,但如果接收到无效参数,则返回 Date32 的最小值。
示例
查询:
结果:
toDate32OrNull
与 toDate32 相同,但在收到无效参数时返回 NULL。
示例
查询:
结果:
toDate32OrDefault
将参数转换为 Date32 数据类型。如果值超出范围,toDate32OrDefault 会返回 Date32 支持的下边界值。如果参数为 Date 类型,则会考虑其取值范围的边界。若接收到无效参数,则返回默认值。
示例
查询:
结果:
toDateTime64
将输入值转换为 DateTime64 类型的值。
语法
参数
expr— 值。String、UInt32、Float 或 DateTime。scale- 刻度大小(精度):10-precision 秒。有效范围:[ 0 : 9 ]。timezone(可选)- 指定的 DateTime64 对象的时区。
返回值
- 具有亚秒级精度的日历日期和时间。DateTime64。
示例
- 当取值在有效范围内时:
- 作为具有精度的 Decimal 类型:
如果没有小数点,该值仍然会被解释为以秒为单位的 Unix 时间戳:
- 使用
timezone:
toDateTime64OrZero
与 toDateTime64 类似,此函数将输入值转换为 DateTime64 类型的值,但若参数无效,则返回 DateTime64 的最小值。
语法
参数
expr— 值。String、UInt32、Float 或 DateTime。scale- 刻度(精度):10-precision 秒。有效范围:[ 0 : 9 ]。timezone(可选)- 指定DateTime64对象的时区。
返回值
- 具有亚秒级精度的日历日期和时间,否则为
DateTime64的最小值:1970-01-01 01:00:00.000。DateTime64。
示例
查询:
结果:
另请参阅
toDateTime64OrNull
与 toDateTime64 类似,此函数将输入值转换为 DateTime64 类型的值,但如果接收到无效参数则返回 NULL。
语法
参数
expr— 表达式的值。String、UInt32、Float 或 DateTime。scale- 刻度(精度):10-precision 秒。有效范围:[ 0 : 9 ]。timezone(可选)- 指定的 DateTime64 对象的时区。
返回值
- 具有亚秒级精度的日历日期和时间,否则返回
NULL。DateTime64/NULL。
示例
查询:
结果:
另请参阅
toDateTime64OrDefault
与 toDateTime64 类似,该函数将输入值转换为 DateTime64 类型的值, 但在接收到无效参数时,会返回 DateTime64 的默认值, 或返回提供的默认值。
语法
参数
expr— 值。String、UInt32、Float 或 DateTime。scale- 刻度大小(精度):10-precision 秒。有效范围:[ 0 : 9 ]。timezone(可选)- 指定的 DateTime64 对象的时区。default(可选)- 当传入参数无效时要返回的默认值。DateTime64。
返回值
- 具有子秒精度的日历日期和时间;否则返回
DateTime64的最小值,或在提供时返回default值。DateTime64。
示例
查询:
结果:
另请参阅
toDecimal32
将输入值转换为 Decimal(9, S) 类型且小数位数为 S 的值。发生错误时抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。参见 Expression。S— 介于 0 和 9 之间的 scale 参数,用于指定数字小数部分最多可以有多少位。类型为 UInt8。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或字符串表示形式。
- 类型为 Float32/64 的值或字符串表示形式。
不支持的参数:
- Float32/64 值
NaN和Inf(大小写不敏感)的值或字符串表示形式。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal32('0xc0fe', 1);。
如果 expr 的值超过 Decimal32 的范围,则可能发生溢出:( -1 * 10^(9 - S), 1 * 10^(9 - S) )。
小数部分中多余的位数会被截断(不会四舍五入)。
整数部分中多余的位数将导致抛出异常。
进行转换时会截断多余的数字,并且在处理 Float32/Float64 输入时,由于操作是使用浮点指令执行的,其行为可能会出乎意料。
例如:toDecimal32(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
可以使用 String 作为输入,使得运算使用底层整数类型:toDecimal32('1.15', 2) = 1.15
返回值
- 类型为
Decimal(9, S)的值。参见 Decimal32(S)。
示例
查询:
结果:
另请参阅
toDecimal32OrZero
与 toDecimal32 类似,此函数将输入值转换为类型为 Decimal(9, S) 的值,但在发生错误时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示形式。
- 类型为 Float32/64 的字符串表示形式。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示形式。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toDecimal32OrZero('0xc0fe', 1);。
如果 expr 的值超出了 Decimal32 的取值范围,则可能发生溢出:( -1 * 10^(9 - S), 1 * 10^(9 - S) )。
小数部分中过多的数字会被丢弃(不做四舍五入)。
整数部分中过多的数字会导致错误。
返回值
- 若成功,则返回类型为
Decimal(9, S)的值,否则返回带有S位小数的0。Decimal32(S)。
示例
查询:
结果:
另请参阅
toDecimal32OrNull
与 toDecimal32 类似,此函数将输入值转换为类型为 Nullable(Decimal(9, S)) 的值,但在出错时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- 值为
NaN和Inf的 Float32/64 字符串表示。 - 二进制和十六进制值的字符串表示,例如
SELECT toDecimal32OrNull('0xc0fe', 1);。
如果 expr 的值超出 Decimal32 的取值范围,则可能发生溢出:( -1 * 10^(9 - S), 1 * 10^(9 - S) )。
小数部分中多余的数字会被截断(不进行四舍五入)。
整数部分中多余的数字将导致错误。
返回值
- 成功时返回类型为
Nullable(Decimal(9, S))的值,否则返回相同类型的NULL值。Decimal32(S)。
示例
查询:
结果:
另请参阅
toDecimal32OrDefault
与 toDecimal32 类似,此函数将输入值转换为类型为 Decimal(9, S) 的值,但在发生错误时返回默认值。
语法
参数
expr— 数字的字符串表示形式。String。S— 取值在 0 到 9 之间的 scale 参数,用于指定数字小数部分最多可以包含的位数。UInt8。default(可选)— 当解析为Decimal32(S)类型失败时返回的默认值。Decimal32(S)。
支持的参数:
- (U)Int8/16/32/64/128/256 类型的字符串表示。
- Float32/64 类型的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal32OrDefault('0xc0fe', 1);。
如果 expr 的值超出 Decimal32 的取值范围,可能会发生溢出:( -1 * 10^(9 - S), 1 * 10^(9 - S) )。
小数部分中过多的数字会被丢弃(不进行四舍五入)。
整数部分中过多的数字会导致错误。
当使用 Float32/Float64 作为输入时,由于转换是使用浮点指令执行的,会丢弃多余的数字,并且在某些情况下可能表现出意料之外的行为。
例如:toDecimal32OrDefault(1.15, 2) 等于 1.14,因为在浮点计算中 1.15 * 100 的结果是 114.99。
你可以使用 String 作为输入,从而让操作使用底层的整数类型:toDecimal32OrDefault('1.15', 2) = 1.15
返回值
- 若转换成功,返回
Decimal(9, S)类型的值,否则返回传入的默认值;如果未传入默认值,则返回0。Decimal32(S)。
示例
查询:
结果:
另请参阅
toDecimal64
将输入值转换为类型为 Decimal(18, S)、小数位数为 S 的值。若发生错误则抛出异常。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression。S— 介于 0 和 18 之间的 Scale 参数,用于指定数字小数部分可以有多少位。UInt8。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示形式。
- 类型为 Float32/64 的值或其字符串表示形式。
不支持的参数:
- Float32/64 值
NaN和Inf(不区分大小写)的值或字符串表示形式。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toDecimal64('0xc0fe', 1);。
如果 expr 的值超出 Decimal64 的范围,则可能发生溢出:( -1 * 10^(18 - S), 1 * 10^(18 - S) )。
小数部分多余的位数将被丢弃(不会四舍五入)。
整数部分多余的位数将导致抛出异常。
在处理 Float32/Float64 输入时,转换会丢弃多余的数字,并且由于操作是使用浮点指令执行的,因此可能以出乎意料的方式运行。
例如:toDecimal64(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
可以使用 String 类型的输入,从而使运算使用底层的整数类型:toDecimal64('1.15', 2) = 1.15
返回值
- 类型为
Decimal(18, S)的值。Decimal64(S)。
示例
查询:
结果:
另请参阅
toDecimal64OrZero
类似于 toDecimal64,此函数将输入值转换为 Decimal(18, S) 类型的值,但在出错时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- 值为
NaN和Inf的 Float32/64 字符串表示。 - 二进制和十六进制值的字符串表示,例如
SELECT toDecimal64OrZero('0xc0fe', 1);。
如果 expr 的值超出 Decimal64 的取值范围,则可能发生溢出:( -1 * 10^(18 - S), 1 * 10^(18 - S) )。
小数部分中多余的数字会被直接丢弃(不进行四舍五入)。
整数部分中多余的数字会导致报错。
返回值
- 成功时返回类型为
Decimal(18, S)的值,否则返回小数位数为S的0。Decimal64(S)。
示例
查询:
结果:
另请参阅
toDecimal64OrNull
与 toDecimal64 类似,此函数将输入值转换为 Nullable(Decimal(18, S)) 类型的值,但在发生错误时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示形式。
- 类型为 Float32/64 的字符串表示形式。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示形式。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toDecimal64OrNull('0xc0fe', 1);。
如果 expr 的数值超出 Decimal64 的取值范围,则会发生溢出:( -1 * 10^(18 - S), 1 * 10^(18 - S) )。
多余的小数位会被丢弃(不会进行四舍五入)。
整数部分多出的数字会导致错误。
返回值
- 如果成功,返回类型为
Nullable(Decimal(18, S))的值;否则返回相同类型的NULL值。Decimal64(S)。
示例
查询:
结果:
另请参阅
toDecimal64OrDefault
类似于 toDecimal64,此函数将输入值转换为 Decimal(18, S) 类型的值,但在发生错误时返回默认值。
语法
参数
expr— 数字的字符串表示形式。String。S— 介于 0 和 18 之间的 scale 参数,用于指定数字小数部分最多可以有多少位。UInt8。default(可选)— 当解析为Decimal64(S)类型失败时返回的默认值。Decimal64(S)。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal64OrDefault('0xc0fe', 1);。
如果 expr 的值超出 Decimal64 的取值范围 ( -1 * 10^(18 - S), 1 * 10^(18 - S) ),可能会发生溢出。
小数部分中多余的数字会被直接丢弃(不会四舍五入)。
整数部分中多余的数字会导致错误。
当处理 Float32/Float64 输入时,由于操作是使用浮点指令执行的,转换会丢弃额外的数字,并且可能会以非预期的方式工作。
例如:toDecimal64OrDefault(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 等于 114.99。
您可以使用 String 作为输入,使操作使用底层整数类型:toDecimal64OrDefault('1.15', 2) = 1.15
返回值
- 成功时返回
Decimal(18, S)类型的值,否则返回传入的默认值,如果未传入则返回0。Decimal64(S)。
示例
查询:
结果:
另请参阅
toDecimal128
将输入值转换为类型为 Decimal(38, S)、标度(scale)为 S 的值。出错时抛出异常。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值或其字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf(不区分大小写)的值或其字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal128('0xc0fe', 1);。
如果 expr 的值超出 Decimal128 的范围,则可能发生溢出:( -1 * 10^(38 - S), 1 * 10^(38 - S) )。
小数部分中过多的数字会被直接丢弃(不进行四舍五入)。
整数部分中过多的数字会导致抛出异常。
在处理 Float32/Float64 输入时,转换会丢弃多余的数字,并且由于运算是使用浮点指令执行的,因此可能出现非预期的结果。
例如:toDecimal128(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
你可以使用字符串类型的输入,使运算基于底层整数类型进行:toDecimal128('1.15', 2) = 1.15
返回值
- 类型为
Decimal(38, S)的值。Decimal128(S)。
示例
查询:
结果:
另请参阅
toDecimal128OrZero
与 toDecimal128 类似,此函数将输入值转换为 Decimal(38, S) 类型的值,但在出错时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal128OrZero('0xc0fe', 1);。
如果 expr 的值超出 Decimal128 的范围 ( -1 * 10^(38 - S), 1 * 10^(38 - S) ),会发生溢出。
小数部分中过多的数字会被截断(不进行四舍五入)。
整数部分中过多的数字会导致错误。
返回值
- 成功时返回类型为
Decimal(38, S)的值,否则返回带有S位小数的0。 Decimal128(S)。
示例
查询:
结果:
另请参阅
toDecimal128OrNull
与 toDecimal128 类似,此函数将输入值转换为 Nullable(Decimal(38, S)) 类型的值,但在发生错误时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal128OrNull('0xc0fe', 1);。
如果 expr 的值超出 Decimal128 的范围,则可能发生溢出:( -1 * 10^(38 - S), 1 * 10^(38 - S) )。
小数部分中多余的数字会被丢弃(不进行四舍五入)。
整数部分中多余的数字会导致报错。
返回值
- 成功时返回类型为
Nullable(Decimal(38, S))的值,否则返回相同类型的NULL值。Decimal128(S)。
示例
查询:
结果:
另请参阅
toDecimal128OrDefault
与 toDecimal128 类似,此函数将输入值转换为 Decimal(38, S) 类型的值,但在发生错误时返回默认值。
语法
参数
expr— 数字的字符串表示形式。String。S— 介于 0 和 38 之间的刻度(scale)参数,指定数字小数部分最多可以有多少位数字。UInt8。default(可选)— 当解析为Decimal128(S)类型失败时返回的默认值。Decimal128(S)。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal128OrDefault('0xc0fe', 1);。
如果 expr 的值超出 Decimal128 的范围 ( -1 * 10^(38 - S), 1 * 10^(38 - S) ),则可能发生溢出。
小数部分中多出的数字会被丢弃(不会四舍五入)。
整数部分中多出的数字会导致错误。
在处理 Float32/Float64 输入时,转换会丢弃多余的数字,并且由于运算是使用浮点指令执行的,因此可能会产生非预期的结果。
例如:toDecimal128OrDefault(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
可以使用字符串形式的输入,这样运算会使用底层整数类型:toDecimal128OrDefault('1.15', 2) = 1.15
返回值
- 若成功则返回类型为
Decimal(38, S)的值,否则返回传入的默认值,如果未传入则返回0。Decimal128(S)。
示例
查询:
结果:
另请参阅
toDecimal256
将输入值转换为类型为 Decimal(76, S)、小数位数为 S 的值。发生错误时抛出异常。
语法
参数
expr— 返回数字或数字的字符串表示形式的表达式。Expression。S— 介于 0 和 76 之间的 scale(小数位数)参数,指定数字小数部分可以拥有的位数。UInt8。
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的值或其字符串表示。
- 类型为 Float32/64 的值或其字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf(不区分大小写)的值或字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal256('0xc0fe', 1);。
如果 expr 的值超出 Decimal256 的边界,则可能发生溢出:( -1 * 10^(76 - S), 1 * 10^(76 - S) )。
多余的小数位会被丢弃(不会四舍五入)。
整数部分多出的位数会导致抛出异常。
在使用 Float32/Float64 作为输入时,由于转换是通过浮点指令执行的,会丢弃额外的数字,可能导致产生非预期的结果。
例如:toDecimal256(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 等于 114.99。
可以使用 String 类型作为输入,使运算基于底层整数类型执行:toDecimal256('1.15', 2) = 1.15
返回值
- 类型为
Decimal(76, S)的值。Decimal256(S)。
示例
查询:
结果:
另请参阅
toDecimal256OrZero
与 toDecimal256 类似,此函数将输入值转换为 Decimal(76, S) 类型的值,但在发生错误时返回 0。
语法
参数
支持的参数:
- (U)Int8/16/32/64/128/256 类型值的字符串表示。
- Float32/64 类型值的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如
SELECT toDecimal256OrZero('0xc0fe', 1);。
如果 expr 的值超出 Decimal256 的范围,则可能发生溢出:( -1 * 10^(76 - S), 1 * 10^(76 - S) )。
小数部分中多余的位数会被截断(不会四舍五入)。
整数部分中多余的位数会导致错误。
返回值
- 成功时返回类型为
Decimal(76, S)的值,否则返回带有S位小数的0。Decimal256(S)。
示例
查询:
结果:
另请参阅
toDecimal256OrNull
类似于 toDecimal256,此函数将输入值转换为类型为 Nullable(Decimal(76, S)) 的值,但在出错时返回 0。
语法
参数
支持的参数:
- 类型为 (U)Int8/16/32/64/128/256 的字符串表示。
- 类型为 Float32/64 的字符串表示。
不支持的参数:
- Float32/64 值
NaN和Inf的字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal256OrNull('0xc0fe', 1);。
如果 expr 的值超出 Decimal256 的范围 ( -1 * 10^(76 - S), 1 * 10^(76 - S) ),则可能会发生溢出。
小数部分中过多的数字会被截断(不会四舍五入)。
整数部分中过多的数字会导致错误。
返回值
- 成功时返回类型为
Nullable(Decimal(76, S))的值,否则返回相同类型的NULL值。Decimal256(S)。
示例
查询:
结果:
另请参阅
toDecimal256OrDefault
与 toDecimal256 类似,此函数将输入值转换为 Decimal(76, S) 类型的值,但在发生错误时返回默认值。
语法
参数
expr— 数字的字符串表示形式。String。S— 介于 0 和 76 之间的 scale 参数,指定数字的小数部分最多可以有多少位。UInt8。default(可选)— 当解析为Decimal256(S)类型失败时返回的默认值。Decimal256(S)。
支持的参数:
- (U)Int8/16/32/64/128/256 类型的字符串表示。
- Float32/64 类型的字符串表示。
不支持的参数:
- 值为
NaN和Inf的 Float32/64 字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal256OrDefault('0xc0fe', 1);。
如果 expr 的值超出 Decimal256 的取值范围,则可能发生溢出:( -1 * 10^(76 - S), 1 * 10^(76 - S) )。
小数部分中多余的数字会被丢弃(不会四舍五入)。
整数部分中多余的数字会导致报错。
在使用 Float32/Float64 输入时,转换会丢弃多余的数字,并且由于操作是使用浮点指令执行的,可能会出现非预期的行为。
例如:toDecimal256OrDefault(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
可以使用 String 输入,使运算基于底层整数类型:toDecimal256OrDefault('1.15', 2) = 1.15
返回值
- 成功时返回类型为
Decimal(76, S)的值,否则返回传入的默认值,如果未传入则返回0。Decimal256(S)。
示例
查询:
结果:
另请参阅
toString
将值转换为其字符串表示。 对于 DateTime 参数,该函数可以接受第二个 String 参数,其中包含时区名称。
语法
参数
返回值
- 返回输入值的字符串形式。
String。
示例
用法示例
toFixedString
将一个 String 类型的参数转换为 FixedString(N) 类型(长度固定为 N 的字符串)。
如果字符串的字节数少于 N,则在右侧用空字节(null 字节)填充;如果字符串的字节数多于 N,则会抛出异常。
语法
参数
返回值
- 长度为 N 的、由
s转换得到的定长字符串。FixedString。
示例
查询:
结果:
toStringCutToZero
接受一个 String 或 FixedString 参数。返回将内容在遇到的第一个零字节处截断后的 String。
语法
示例
查询:
结果:
查询:
结果:
toDecimalString
将数值转换为 String 类型,输出中的小数位数由用户指定。
语法
参数
返回值
- 以给定小数位数(scale)表示的输入值,String 类型。
当所请求的
scale小于原始数字的小数位数时,数值会按照常规算术规则进行四舍五入。
示例
查询:
结果:
reinterpretAsUInt8
通过将输入值视为 UInt8 类型的值来执行字节重解释操作。与 CAST 不同,此函数不会尝试保留原始数值——如果目标类型无法表示该输入值,则输出将毫无意义。
语法
参数
返回值
- 将
x的字节重新解释为 UInt8 类型的值。UInt8。
示例
查询:
结果:
reinterpretAsUInt16
通过将输入值视为 UInt16 类型的值来执行字节重解释操作。不同于 CAST,该函数不会尝试保留原始数值——如果目标类型无法表示输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x按字节重新解释为 UInt16 后得到的值。UInt16。
示例
查询:
结果:
reinterpretAsUInt32
通过将输入值视为 UInt32 类型的值来进行字节级重解释。与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x按字节重新解释为 UInt32 后得到的结果。UInt32。
示例
查询:
结果:
reinterpretAsUInt64
通过将输入值按字节重新解释为 UInt64 类型的值来执行转换。与 CAST 不同,该函数不会尝试保留原始数值含义——如果目标类型无法表示输入类型,则输出结果将没有任何实际意义。
语法
参数
返回值
- 将值
x按字节重新解释为 UInt64 类型。UInt64。
示例
查询:
结果:
reinterpretAsUInt128
按字节重新解释输入值,将其视为 UInt128 类型的值。与 CAST 不同,此函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出结果将毫无意义。
语法
参数
返回值
- 将
x按字节重解释为 UInt128 后得到的值。UInt128。
示例
查询:
结果:
reinterpretAsUInt256
通过将输入值视为 UInt256 类型来执行字节重解释操作。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,输出将毫无意义。
语法
参数
返回值
- 将值
x的字节重新解释为 UInt256 类型。UInt256。
示例
查询:
结果:
reinterpretAsInt8
通过将输入值视为 Int8 类型的值来执行字节重解释。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示该输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x按字节重新解释为 Int8 类型的值。Int8。
示例
查询:
结果:
reinterpretAsInt16
通过将输入值视为 Int16 类型的值来执行字节重解释。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将没有意义。
语法
参数
返回值
- 按字节重新解释为 Int16 的
x值。Int16。
示例
查询:
结果:
reinterpretAsInt32
通过将输入值的字节按 Int32 类型重新解释来执行转换。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出将是无意义的值。
语法
参数
返回值
- 将值
x按字节重新解释后的 Int32 值。Int32。
示例
查询:
结果:
reinterpretAsInt64
按字节重新解释输入值,将其视为 Int64 类型的值。不同于 CAST,该函数不会尝试保留原始值——如果目标类型无法表示该输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x按字节重新解释为 Int64 类型。Int64。
示例
查询:
结果:
reinterpretAsInt128
通过将输入值视为 Int128 类型的值来执行字节重解释。不同于 CAST,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x重新解释为 Int128。Int128。
示例
查询:
结果:
reinterpretAsInt256
通过将输入值视为 Int256 类型的值来对字节进行重解释。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将没有意义。
语法
参数
返回值
- 将值
x按字节重新解释为 Int256 后得到的结果。Int256。
示例
查询:
结果:
reinterpretAsFloat32
通过将输入值视为 Float32 类型的值来按字节重解释。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x重新解释为 Float32 类型。Float32。
示例
查询:
结果:
reinterpretAsFloat64
通过将输入值按字节重新解释为 Float64 类型来进行转换。与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出将毫无意义。
语法
参数
返回值
- 将值
x重新解释为 Float64 类型的结果。Float64。
示例
查询:
结果:
reinterpretAsDate
接受一个字符串、固定字符串或数值,并按主机字节序(小端序)将其字节解释为一个数字。函数将该数字视为自 Unix 纪元起始以来的天数,并返回对应的日期。
语法
参数
返回值
- 日期。Date。
实现细节
如果提供的字符串长度不够,函数会将其视为在末尾用所需数量的空字节进行了填充。如果字符串长于所需长度,则会忽略多余的字节。
示例
查询:
结果:
reinterpretAsDateTime
这些函数接受一个字符串,并将其开头的字节按照主机字节序(小端序)解释为一个数字。返回一个日期时间值,将该数字视为自 Unix 纪元起经过的秒数。
语法
参数
返回值
- 日期和时间。DateTime。
实现细节
如果提供的字符串不够长,函数会将其视为在末尾填充了所需数量的零字节。如果字符串长于所需长度,则会忽略多余的字节。
示例
查询:
结果:
reinterpretAsString
此函数接收一个数字、日期或带时间的日期,并返回一个字符串,该字符串包含以主机字节序(小端序)表示对应值的字节序列。末尾的 null 字节会被去除。例如,一个 UInt32 类型且值为 255 的数据,其对应的字符串长度为 1 个字节。
语法
参数
返回值
- 包含表示
x的字节序列的字符串。String。
示例
查询:
结果:
reinterpretAsFixedString
此函数接受一个数字、日期或带时间的日期,并返回一个 FixedString,其内容为按主机字节序(小端序)表示相应值的字节序列。末尾的空字节会被丢弃。例如,当类型为 UInt32 的值为 255 时,返回的 FixedString 长度为 1 字节。
语法
参数
返回值
- 包含
x的字节表示形式的定长字符串。FixedString。
示例
查询:
结果:
reinterpretAsUUID
除了此处列出的 UUID 函数外,还有一份专门的 UUID 函数文档。
接受一个 16 字节的字符串,将其视为由两个 8 字节部分组成,并按小端字节序进行解释,从而返回一个 UUID。如果字符串长度不足,函数的行为等同于在字符串末尾填充所需数量的空字节。如果字符串长于 16 字节,则会忽略末尾多出的字节。
语法
参数
fixed_string— 大端序字节串。 FixedString。
返回值
- 返回 UUID 类型的值。 UUID。
示例
字符串转换为 UUID。
查询:
结果:
在 String 与 UUID 之间相互转换。
查询:
结果:
reinterpret
对 x 的值使用相同的源内存字节序列,并将其按目标类型重新解释。
语法
参数
x— 任意类型。type— 目标类型。如果是数组,则数组元素类型必须是定长类型。
返回值
- 目标类型的值。
示例
查询:
结果:
查询语句:
结果:
CAST
将输入值转换为指定的数据类型。与 reinterpret 函数不同,CAST 会尝试改用新的数据类型来表示相同的值。如果无法完成转换,则会抛出异常。
支持多种语法形式。
语法
参数
x— 要转换的值,可以是任意类型。T— 目标数据类型的名称,类型为 String。t— 目标数据类型。
返回值
- 转换后的值。
如果输入值超出了目标类型的取值范围,结果会发生溢出。例如,CAST(-1, 'UInt8') 返回 255。
示例
查询:
结果:
查询:
结果:
转换为 FixedString (N) 仅适用于类型为 String 或 FixedString 的参数。
支持向 Nullable 类型转换以及从该类型再转换回来。
示例
查询:
结果:
查询:
结果:
另请参阅
accurateCast(x, T)
将 x 转换为数据类型 T。
与 cast 的区别在于,如果 x 的值超出类型 T 的取值范围,accurateCast 在转换时不允许数值类型溢出。例如,accurateCast(-1, 'UInt8') 会抛出异常。
示例
查询:
结果:
查询:
结果:
accurateCastOrNull(x, T)
将输入值 x 转换为指定的数据类型 T。始终返回 Nullable 类型,如果转换结果无法用目标类型表示,则返回 NULL。
语法
参数
x— 输入值。T— 返回的数据类型名称。
返回值
- 将值转换为指定数据类型
T后的结果。
示例
查询:
结果:
查询:
结果:
accurateCastOrDefault(x, T[, default_value])
将输入值 x 转换为指定的数据类型 T。如果转换后的值无法用目标类型表示,则返回该类型的默认值;如果指定了 default_value,则返回 default_value。
语法
参数
x— 输入值。T— 返回值类型的名称。default_value— 返回值类型的默认值。
返回值
- 转换为指定数据类型
T后的值。
示例
查询:
结果:
查询:
结果:
toInterval
根据数值和时间间隔单位(例如 'second' 或 'day')构造一个 Interval 数据类型的值。
语法
参数
-
value— 时间间隔的长度。可以是整数或其字符串表示形式,也可以是浮点数。(U)Int*/Float*/String。 -
unit— 要创建的时间间隔单位类型。String Literal。 可能的取值为:nanosecondmicrosecondmillisecondsecondminutehourdayweekmonthquarteryear
unit参数不区分大小写。
返回值
- 生成的时间间隔值。Interval
示例
toIntervalYear
返回一个长度为 n 年、数据类型为 IntervalYear 的时间间隔。
语法
参数
返回值
n年的时间间隔。IntervalYear。
示例
查询:
结果:
toIntervalQuarter
返回一个由 n 个季度组成、数据类型为 IntervalQuarter 的时间间隔。
语法
参数
返回值
- 由
n个季度组成的时间区间。IntervalQuarter。
示例
查询:
结果:
toIntervalMonth
返回一个长度为 n 个月、数据类型为 IntervalMonth 的时间间隔。
语法
参数
返回值
- 长度为
n个月的区间。IntervalMonth。
示例
查询:
结果:
toIntervalWeek
返回一个长度为 n 周、数据类型为 IntervalWeek 的时间间隔。
语法
参数
返回值
n周的时间间隔。IntervalWeek。
示例
查询:
结果:
toIntervalDay
返回一个由 n 天组成、数据类型为 IntervalDay 的时间间隔。
语法
参数
返回值
- 长度为
n天的时间间隔。IntervalDay。
示例
查询:
结果:
toIntervalHour
返回一个表示 n 小时的 IntervalHour 类型时间间隔。
语法
参数
返回值
n小时的时间间隔。IntervalHour。
示例
查询:
结果:
toIntervalMinute
返回一个表示 n 分钟的 IntervalMinute 类型时间间隔。
语法
参数
返回值
- 时长为
n分钟的时间间隔。IntervalMinute。
示例
查询:
结果:
toIntervalSecond
返回一个 n 秒的时间间隔,数据类型为 IntervalSecond。
语法
参数
返回值
n秒的时间间隔。IntervalSecond。
示例
查询:
结果:
toIntervalMillisecond
返回一个时长为 n 毫秒、数据类型为 IntervalMillisecond 的时间间隔。
语法
参数
返回值
- 长度为
n毫秒的区间。IntervalMilliseconds。
示例
查询:
结果:
toIntervalMicrosecond
返回一个表示 n 微秒的区间,数据类型为 IntervalMicrosecond。
语法
参数
返回值
- 长度为
n微秒的时间间隔。IntervalMicrosecond。
示例
查询:
结果:
toIntervalNanosecond
返回一个长度为 n 纳秒、数据类型为 IntervalNanosecond 的时间间隔。
语法
参数
返回值
- 长度为
n纳秒的区间。IntervalNanosecond。
示例
查询:
结果:
parseDateTime
根据 MySQL 格式字符串,将 String 转换为 DateTime。
此函数是函数 formatDateTime 的反向操作。
语法
参数
str— 要解析的字符串format— 格式字符串。可选。如果未指定,则为%Y-%m-%d %H:%i:%s。timezone— 时区。可选。
返回值
返回一个根据 MySQL 风格的格式字符串从输入字符串解析得到的 DateTime 值。
支持的格式说明符
支持 formatDateTime 中列出的所有格式说明符,但不支持以下说明符:
- %Q: 季度 (1-4)
示例
别名为:TO_TIMESTAMP。
parseDateTimeOrZero
与 parseDateTime 相同,唯一区别是当遇到无法处理的日期格式时,会返回零日期值。
parseDateTimeOrNull
与 parseDateTime 的行为相同,只是在遇到无法处理的日期格式时会返回 NULL。
别名:str_to_date。
parseDateTimeInJodaSyntax
与 parseDateTime 类似,只是该函数使用的是 Joda 的格式字符串,而不是 MySQL 语法。
此函数是函数 formatDateTimeInJodaSyntax 的逆操作。
语法
参数
str— 要解析的字符串format— 格式字符串。可选。如果未指定,则为yyyy-MM-dd HH:mm:ss。timezone— 时区。可选。
返回值
返回一个根据 Joda 风格的格式字符串从输入字符串中解析得到的 DateTime 值。
支持的格式说明符
支持在 formatDateTimeInJodaSyntax 中列出的所有格式说明符,以下除外:
- S: 秒的小数部分
- z: 时区
- Z: 时区偏移量/ID
示例
parseDateTimeInJodaSyntaxOrZero
与 parseDateTimeInJodaSyntax 的行为相同,区别在于当遇到无法处理的日期格式时会返回零日期。
parseDateTimeInJodaSyntaxOrNull
与 parseDateTimeInJodaSyntax 的行为相同,只是当遇到无法处理的日期格式时会返回 NULL。
parseDateTime64
根据 MySQL 格式字符串,将 String 转换为 DateTime64。
语法
参数
str— 要解析的字符串。format— 格式字符串。可选。如果未指定,默认为%Y-%m-%d %H:%i:%s.%f。timezone— Timezone。可选。
返回值
返回一个根据 MySQL 风格的格式字符串从输入字符串解析得到的 DateTime64 值。 返回值的精度为 6。
parseDateTime64OrZero
与 parseDateTime64 的行为相同,不同之处在于当遇到无法处理的日期格式时,它会返回零日期。
parseDateTime64OrNull
与 parseDateTime64 的行为相同,区别在于当遇到无法处理的日期格式时,它会返回 NULL。
parseDateTime64InJodaSyntax
根据 Joda 格式字符串,将 String 转换为 DateTime64。
语法
参数
str— 要解析的字符串。format— 格式字符串。可选。未指定时默认为yyyy-MM-dd HH:mm:ss。timezone— Timezone。可选。
返回值
返回一个根据 Joda 风格的格式字符串从输入字符串解析得到的 DateTime64 值。
返回值的精度等于格式字符串中 S 占位符的数量(最多为 6)。
parseDateTime64InJodaSyntaxOrZero
与 parseDateTime64InJodaSyntax 的行为相同,不同之处在于当遇到无法处理的日期格式时,它会返回零日期值。
parseDateTime64InJodaSyntaxOrNull
与 parseDateTime64InJodaSyntax 相同,唯一不同是当遇到无法处理的日期格式时,它会返回 NULL。
parseDateTimeBestEffort
parseDateTime32BestEffort
将以 String 类型表示的日期和时间转换为 DateTime 数据类型。
该函数可以解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 定义的以及其他一些日期和时间格式。
语法
参数
支持的非标准格式
- 包含 9 至 10 位 Unix 时间戳 的字符串。
- 同时包含日期和时间组件的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 仅包含日期但不包含时间组件的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 包含日和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM被替换为01。 - 包含日期和时间以及时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。例如,2020-12-12 17:36:00 -5:00。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
对于所有带分隔符的格式,函数都可以解析用月份全名或前三个字母表示的月份名称。示例:24/DEC/18、24-Dec-18、01-September-2018。
如果未指定年份,则默认为当前年份。如果得到的 DateTime 恰好位于将来时间点(即使只比当前时刻晚一秒),则会将当前年份替换为上一年。
返回值
- 将
time_string转换为 DateTime 数据类型后的结果。
示例
查询:
结果:
查询:
结果:
查询:
结果:
查询:
结果:
查询:
结果:
查询:
结果:
另请参阅
parseDateTimeBestEffortUS
此函数在处理 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。
parseDateTimeBestEffortOrNull
parseDateTime32BestEffortOrNull
与 parseDateTimeBestEffort 相同,区别在于当遇到无法处理的日期格式时返回 NULL。
parseDateTimeBestEffortOrZero
parseDateTime32BestEffortOrZero
与 parseDateTimeBestEffort 相同,但在遇到无法解析的日期格式时,会返回 0 日期或 0 日期时间。
parseDateTimeBestEffortUSOrNull
与 parseDateTimeBestEffortUS 函数相同,唯一不同在于当遇到无法解析的日期格式时返回 NULL。
parseDateTimeBestEffortUSOrZero
与 parseDateTimeBestEffortUS 函数相同,区别在于,当遇到无法处理的日期格式时,它会返回零日期(1970-01-01)或带时间的零日期(1970-01-01 00:00:00)。
parseDateTime64BestEffort
与 parseDateTimeBestEffort 函数相同,但额外支持解析毫秒和微秒,并返回 DateTime 数据类型。
语法
参数
time_string— 要转换的日期或日期时间的字符串。String。precision— 所需精度。3— 毫秒,6— 微秒。默认值为3。可选。UInt8。time_zone— Timezone。函数会根据该时区解析time_string。可选。String。
返回值
- 转换为 DateTime 数据类型的
time_string。
示例
查询:
结果:
parseDateTime64BestEffortUS
与 parseDateTime64BestEffort 相同,但在存在歧义时,该函数会优先按美国日期格式(MM/DD/YYYY 等)进行解析。
parseDateTime64BestEffortOrNull
与 parseDateTime64BestEffort 相同,只是当遇到无法处理的日期格式时会返回 NULL。
parseDateTime64BestEffortOrZero
与 parseDateTime64BestEffort 相同,不同之处在于当遇到无法处理的日期格式时,会返回零日期或零日期时间。
parseDateTime64BestEffortUSOrNull
与 parseDateTime64BestEffort 相同,不同之处在于,当存在歧义时,此函数优先采用美国日期格式(MM/DD/YYYY 等),并在遇到无法处理的日期格式时返回 NULL。
parseDateTime64BestEffortUSOrZero
与 parseDateTime64BestEffort 基本相同,只是在存在歧义时,此函数优先使用美国日期格式(MM/DD/YYYY 等),并在遇到无法处理的日期格式时返回零日期或零日期时间值。
toLowCardinality
将输入参数转换为同一数据类型的 LowCardinality 版本。
要将 LowCardinality 数据类型的数据进行转换,请使用 CAST 函数。例如,CAST(x as String)。
语法
参数
返回值
expr的结果。类型为expr类型的 LowCardinality。
示例
查询:
结果:
toUnixTimestamp
将 String、Date 或 DateTime 转换为 Unix 时间戳(自 1970-01-01 00:00:00 UTC 起的秒数),返回 UInt32 类型的值。
语法
参数
date: 要转换的值。Date或Date32或DateTime或DateTime64或String。timezone: 可选。用于转换的时区。如果未指定,则使用服务器时区。String
返回值
返回 Unix 时间戳。UInt32
示例
使用示例
toUnixTimestamp64Second
将 DateTime64 转换为具有固定秒级精度的 Int64 值。输入值会根据其自身精度被按比例缩放。
输出值是 UTC 时区的时间戳,而不是 DateTime64 所在时区的时间戳。
语法
参数
value— 任意精度的 DateTime64 值。DateTime64。
返回值
- 将
value转换为Int64数据类型的值。Int64。
示例
查询:
结果:
toUnixTimestamp64Milli
将 DateTime64 转换为具有固定毫秒精度的 Int64 整数值。输入值会根据其小数精度被相应放大或缩小。
输出值是 UTC 时区的时间戳,而不是 DateTime64 所在时区的时间戳。
语法
参数
value— 任意精度的 DateTime64 值。DateTime64。
返回值
- 将
value转换为Int64数据类型的值。Int64。
示例
查询:
结果:
toUnixTimestamp64Micro
将 DateTime64 转换为具有固定微秒精度的 Int64 值。输入值会根据其精度按比例放大或缩小。
输出值是 UTC 时间戳,而不是按 DateTime64 的时区计算的时间戳。
语法
参数
value— 具有任意精度的 DateTime64 值。DateTime64。
返回值
- 将
value转换为Int64数据类型后的结果。Int64。
示例
查询:
结果:
toUnixTimestamp64Nano
将 DateTime64 转换为具有固定纳秒级精度的 Int64 值。输入值会根据其精度按比例放大或缩小。
输出值是 UTC 时间戳,而不是按 DateTime64 所在时区计算的时间戳。
语法
参数
value— 具有任意精度的 DateTime64 值。DateTime64。
返回值
- 将
value转换为Int64数据类型后的结果。Int64。
示例
查询:
结果:
fromUnixTimestamp64Second
将 Int64 转换为具有固定秒级精度、可选时区的 DateTime64 值。输入值会根据其当前精度被相应地放大或缩小。
请注意,输入值被视为 UTC 时间戳,而不是给定(或隐式)时区下的时间戳。
语法
参数
返回值
- 将
value转换为精度为0的 DateTime64 类型的值。DateTime64。
示例
查询:
结果:
fromUnixTimestamp64Milli
将 Int64 转换为具有固定毫秒精度、可选时区的 DateTime64 值。输入值会根据其精度被相应地放大或缩小。
请注意,输入值被视为 UTC 时间戳,而不是给定(或隐式)时区下的时间戳。
语法
参数
返回值
- 将
value转换为精度为3的 DateTime64 的结果。DateTime64。
示例
查询:
结果:
fromUnixTimestamp64Micro
将 Int64 转换为具有固定微秒精度的 DateTime64 值,并可选指定时区。输入值会根据其精度被相应地按比例放大或缩小。
请注意,输入值会被解释为 UTC 时间戳,而不是给定(或隐含)时区下的时间戳。
语法
参数
返回值
- 将
value转换为精度为6的 DateTime64。DateTime64。
示例
查询:
结果:
fromUnixTimestamp64Nano
将 Int64 转换为具有固定纳秒精度并可选时区的 DateTime64 值。输入值会根据其精度按比例放大或缩小。
请注意,输入值被视为 UTC 时间戳,而不是给定(或隐式)时区中的时间戳。
语法
参数
返回值
- 将
value转换为精度为9的 DateTime64 类型的值。DateTime64。
示例
查询:
结果:
formatRow
按指定格式将任意表达式转换为字符串。
语法
参数
format— 文本格式。例如,CSV、TabSeparated (TSV)。x,y, ... — 表达式。
返回值
- 格式化后的字符串(对于文本格式,通常以换行符结尾)。
示例
查询:
结果:
注意:如果格式中包含前缀或后缀,它将被写入每一行。
示例
查询:
结果:
注意:此函数仅支持行式格式。
formatRowNoNewline
通过指定的格式将任意表达式转换为字符串。与 formatRow 的区别在于,该函数会在存在最后一个 \n 时将其去除。
语法
参数
format— 文本格式。例如,CSV、TabSeparated (TSV)。x,y, ... — 表达式。
返回值
- 格式化后的字符串。
示例
查询:
结果: