类型转换函数
数据转换中的常见问题
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))。
在日期与带时间的日期之间进行转换时,采用自然的方式:要么补零时间部分,要么丢弃时间部分。
数值类型之间的转换使用与 C++ 中不同数值类型之间赋值相同的规则。
示例
查询:
结果:
另请参阅 toUnixTimestamp 函数。
CAST
引入版本:v1.1
将一个值转换为指定的数据类型。
与 reinterpret 函数不同,CAST 会尝试在目标类型中产生相同的值。
如果无法做到,则会抛出异常。
语法
参数
返回值
返回转换为目标数据类型后的值。Any
示例
基本用法
使用 AS 语法
使用 :: 语法
accurateCast
引入版本:v1.1
将一个值转换为指定的数据类型。与 CAST 不同,accurateCast 会执行更严格的类型检查,如果转换会导致数据精度丢失或无法进行转换,则抛出异常。
该函数比常规的 CAST 更安全,因为它可以防止精度丢失和无效转换。
语法
参数
返回值
返回转换为目标数据类型后的值。Any
示例
转换成功示例
字符串转数字
accurateCastOrDefault
引入版本:v21.1
将值转换为指定的数据类型。
与 accurateCast 类似,但在无法精确完成转换时,会返回一个默认值而不是抛出异常。
如果将默认值作为第二个参数提供,则它必须是目标类型的值。 如果未提供默认值,则使用目标类型的默认值。
语法
参数
x— 要进行转换的值。AnyT— 目标数据类型的名称。const Stringdefault_value— 可选。转换失败时返回的默认值。Any
返回值
返回转换为目标数据类型的值;如果无法转换,则返回默认值。Any
示例
转换成功
转换失败并使用显式默认值
带隐式默认值的转换失败
accurateCastOrNull
自 v1.1 引入
将一个值转换为指定的数据类型。
与 accurateCast 类似,但如果无法精确完成转换,则返回 NULL 而不是抛出异常。
此函数将 accurateCast 的安全性与优雅的错误处理相结合。
语法
参数
返回值
返回转换为目标数据类型的值,如果无法转换则返回 NULL。Any
示例
转换成功
转换失败时返回 NULL
formatRow
引入版本:v20.7
通过指定的格式将任意表达式转换为字符串。
如果格式中包含前缀或后缀,它会写入到每一行中。 此函数仅支持基于行的输出格式。
语法
参数
返回值
格式化后的字符串(对于文本格式,通常以换行符结尾)。String
示例
基本用法
使用自定义格式
formatRowNoNewline
引入版本:v20.7
与 formatRow 相同,但会去除每一行末尾的换行符。
按给定格式将任意表达式转换为字符串,并从结果中移除所有末尾的换行符。
语法
参数
返回值
返回去除换行符的格式化字符串。String
示例
基础用法
fromUnixTimestamp64Micro
引入于:v20.5
将以微秒为单位的 Unix 时间戳转换为具有微秒精度的 DateTime64 值。
输入值被视为具有微秒精度的 Unix 时间戳(自 1970-01-01 00:00:00 UTC 起的微秒数)。
语法
参数
返回值
返回一个具有微秒级精度的 DateTime64 值。DateTime64(6)
示例
用法示例
fromUnixTimestamp64Milli
自 v20.5 引入
将以毫秒为单位的 Unix 时间戳转换为具有毫秒级精度的 DateTime64 值。
输入值被视为一个具有毫秒级精度的 Unix 时间戳(自 1970-01-01 00:00:00 UTC 起的毫秒数)。
语法
参数
返回值
具有毫秒精度的 DateTime64 值。DateTime64(3)
示例
用法示例
fromUnixTimestamp64Nano
自 v20.5 版本引入
将以纳秒为单位的 Unix 时间戳转换为具有纳秒精度的 DateTime64 值。
输入值被视为具有纳秒精度的 Unix 时间戳(自 1970-01-01 00:00:00 UTC 起的纳秒数)。
请注意,输入值被视为 UTC 时间戳,而不是使用输入值所指定时区的时间戳。
语法
参数
返回值
返回一个具有纳秒精度的 DateTime64 值。DateTime64(9)
示例
用法示例
fromUnixTimestamp64Second
引入于:v24.12
将以秒为单位的 Unix 时间戳转换为具有秒级精度的 DateTime64 值。
输入值被视为具有秒级精度的 Unix 时间戳(自 1970-01-01 00:00:00 UTC 起的秒数)。
语法
参数
返回值
返回一个秒级精度的 DateTime64 值。DateTime64(0)
示例
使用示例
parseDateTime
引入于:v23.3
根据 MySQL 日期格式字符串解析日期和时间字符串。
此函数是 formatDateTime 的逆函数。
它使用格式字符串解析一个字符串参数,返回一个 DateTime 类型的值。
语法
别名: TO_UNIXTIME
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回根据 MySQL 风格的格式字符串从输入字符串解析得到的 DateTime。DateTime
示例
用法示例
parseDateTime32BestEffort
引入版本:v20.9
将日期和时间的字符串形式转换为 DateTime 数据类型。
该函数可以解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 自身格式以及其他一些日期和时间格式。
语法
参数
返回值
返回由 time_string 转换得到的 DateTime 值。DateTime
示例
用法示例
包含时区
Unix 时间戳
parseDateTime32BestEffortOrNull
引入版本:v20.9
与 parseDateTime32BestEffort 相同,不同之处在于当遇到无法处理的日期格式时返回 NULL。
语法
参数
返回值
返回从字符串解析得到的 DateTime 对象,如果解析失败,则返回 NULL。DateTime
示例
用法示例
parseDateTime32BestEffortOrZero
引入于:v20.9
与 parseDateTime32BestEffort 相同,不同之处在于当遇到无法处理的日期格式时,它会返回全零的日期或日期时间值。
语法
参数
返回值
返回从字符串解析得到的 DateTime 对象,如果解析失败则返回零日期(1970-01-01 00:00:00)。DateTime
示例
使用示例
parseDateTime64
引入版本:v24.11
根据 MySQL 日期格式字符串解析具有子秒级精度的日期和时间字符串。
对于 DateTime64 类型,此函数是 formatDateTime 的逆函数。
它按照给定的格式字符串解析一个 String 参数。返回一个 DateTime64 类型的值,可在子秒级精度下表示 1900 年到 2299 年之间的日期和时间。
语法
参数
time_string— 要解析为 DateTime64 类型的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回根据 MySQL 风格的格式字符串,从输入字符串解析得到的 DateTime64 值。DateTime64
示例
用法示例
parseDateTime64BestEffort
引入版本:v20.1
与 parseDateTimeBestEffort 函数相同,但还会解析毫秒和微秒,并返回 DateTime64 数据类型。
语法
参数
time_string— 包含要转换的日期或日期时间的字符串。Stringprecision— 可选。目标精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会按照该时区解析time_string。String
返回值
返回将 time_string 转换为 DateTime64 数据类型的结果。DateTime64
示例
用法示例
parseDateTime64BestEffortOrNull
引入于:v20.1
与 parseDateTime64BestEffort 相同,不同之处在于,当遇到无法解析的日期格式时,它会返回 NULL。
语法
参数
time_string— 包含要转换的日期或日期时间的字符串。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会依据该时区解析time_string。String
返回值
返回将 time_string 转换得到的 DateTime64 值;如果输入无法解析,则返回 NULL。DateTime64 或 NULL
示例
用法示例
parseDateTime64BestEffortOrZero
引入版本:v20.1
与 parseDateTime64BestEffort 相同,但在遇到无法解析的日期格式时,会返回零日期或零日期时间。
语法
参数
time_string— 要转换的日期或日期时间字符串。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
返回值
返回将 time_string 转换为 DateTime64 的结果;如果无法解析输入,则返回零日期/日期时间值(1970-01-01 00:00:00.000)。DateTime64
示例
用法示例
parseDateTime64BestEffortUS
自 v22.8 引入。
与 parseDateTime64BestEffort 相同,只是在存在歧义时,该函数会优先采用美国日期格式(MM/DD/YYYY 等)。
语法
参数
time_string— 包含要转换的日期或日期时间的字符串。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
返回值
返回将 time_string 按照美国日期格式习惯(用于解析存在歧义的情况)转换为 DateTime64 的结果。DateTime64
示例
用法示例
parseDateTime64BestEffortUSOrNull
引入自:v22.8
与 parseDateTime64BestEffort 相同,只是在存在歧义时,该函数会优先采用美国日期格式(MM/DD/YYYY 等),并在遇到无法处理的日期格式时返回 NULL。
语法
参数
time_string— 包含要转换的日期或日期时间的字符串。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据指定时区解析time_string。String
返回值
返回按美国惯用格式将 time_string 转换为 DateTime64 的结果,如果输入无法解析则返回 NULL。DateTime64 或 NULL
示例
使用示例
parseDateTime64BestEffortUSOrZero
自 v22.8 引入
与 parseDateTime64BestEffort 相同,只是在存在歧义时,此函数会优先采用美国日期格式(MM/DD/YYYY 等),并在遇到无法处理的日期格式时返回全零日期或全零日期时间值。
语法
参数
time_string— 包含要转换的日期或日期时间的字符串。Stringprecision— 可选。所需精度。3表示毫秒,6表示微秒。默认值:3。UInt8time_zone— 可选。时区。函数会根据该时区解析time_string。String
返回值
返回按美国格式习惯将 time_string 转换得到的 DateTime64,如果输入无法解析,则返回零日期/日期时间值(1970-01-01 00:00:00.000)。DateTime64
示例
用法示例
parseDateTime64InJodaSyntax
引入于:v24.10
根据 Joda 日期格式化字符串解析具备亚秒级精度的日期时间字符串。
此函数是用于 DateTime64 的 formatDateTimeInJodaSyntax 的反函数。
它使用 Joda 风格的格式化字符串解析一个 String 类型参数。返回一个 DateTime64 类型,该类型可以表示从 1900 年到 2299 年、具备亚秒级精度的日期。
有关格式模式,请参阅 Joda Time 文档。
语法
参数
time_string— 要解析为 DateTime64 的字符串。Stringformat— 采用 Joda 语法的格式字符串,用于指定如何解析time_string。Stringtimezone— 可选。时区。String
返回值
返回根据 Joda 风格的格式字符串从输入字符串解析得到的 DateTime64。DateTime64
示例
用法示例
parseDateTime64InJodaSyntaxOrNull
引入版本:v24.10
与 parseDateTime64InJodaSyntax 相同,但在遇到无法解析的日期格式时返回 NULL。
语法
参数
time_string— 要解析为 DateTime64 的字符串。Stringformat— 使用 Joda 语法指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime64,如果解析失败则返回 NULL。Nullable(DateTime64)
示例
用法示例
parseDateTime64InJodaSyntaxOrZero
引入版本:v24.10
与 parseDateTime64InJodaSyntax 相同,但在遇到无法解析的日期格式时返回零日期值。
语法
参数
time_string— 要解析为 DateTime64 的字符串。Stringformat— 使用 Joda 语法的格式字符串,指定如何解析 time_string。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime64;如果解析失败,则返回零值的 DateTime64。DateTime64
示例
用法示例
parseDateTime64OrNull
引入自:v24.11
与 parseDateTime64 相同,但在遇到无法解析的日期格式时返回 NULL。
语法
参数
time_string— 要解析为 DateTime64 的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime64,如果解析失败,则返回 NULL。Nullable(DateTime64)
示例
用法示例
parseDateTime64OrZero
引入于:v24.11
与 parseDateTime64 相同,但在遇到无法解析的日期格式时返回零值日期。
语法
参数
time_string— 要解析为 DateTime64 的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime64;如果解析失败,则返回 0 的 DateTime64 值。DateTime64
示例
使用示例
parseDateTimeBestEffort
引入于:v1.1
将字符串形式的日期和时间转换为 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。
对于所有带分隔符的格式,函数可以解析以月份全名或前三个字母表示的月份名称。 如果未指定年份,则默认使用当前年份。
语法
参数
返回值
返回由 time_string 解析得到的 DateTime 值。DateTime
示例
使用示例
含时区
Unix 时间戳
parseDateTimeBestEffortOrNull
引入版本:v1.1
与 parseDateTimeBestEffort 相同,不同之处在于当遇到无法处理的日期格式时会返回 NULL。
该函数可以解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 特有以及其他部分日期和时间格式。
支持的非标准格式:
- 包含 9 到 10 位 Unix 时间戳的字符串。
- 同时包含日期和时间组件的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 仅包含日期但不包含时间组件的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 包含日和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM会被填充为01。 - 包含日期和时间以及时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
对于所有带分隔符的格式,函数都可以解析以完整名称或月份名称前三个字母表示的月份名。 如果未指定年份,则默认认为等于当前年份。
语法
参数
返回值
返回 time_string 对应的 DateTime 值,如果输入无法解析则返回 NULL。DateTime 或 NULL
示例
使用示例
parseDateTimeBestEffortOrZero
引入于:v1.1
与 parseDateTimeBestEffort 相同,不同之处在于,当遇到无法处理的日期格式时,它会返回零日期或零日期时间值。
该函数可以解析 ISO 8601、RFC 1123 - 5.2.14 RFC-822 Date and Time Specification、ClickHouse 自身的格式以及其他一些日期和时间格式。
支持的非标准格式:
- 包含 9~10 位 Unix 时间戳的字符串。
- 同时包含日期和时间部分的字符串:
YYYYMMDDhhmmss、DD/MM/YYYY hh:mm:ss、DD-MM-YY hh:mm、YYYY-MM-DD hh:mm:ss等。 - 仅包含日期、不包含时间部分的字符串:
YYYY、YYYYMM、YYYY*MM、DD/MM/YYYY、DD-MM-YY等。 - 仅包含日和时间的字符串:
DD、DD hh、DD hh:mm。在这种情况下,MM会被替换为01。 - 包含日期、时间以及时区偏移信息的字符串:
YYYY-MM-DD hh:mm:ss ±h:mm等。 - syslog 时间戳:
Mmm dd hh:mm:ss。例如,Jun 9 14:20:32。
对于所有带分隔符的格式,该函数可以解析以完整月份名称或月份名称前三个字母表示的月份。 如果未指定年份,则默认为当前年份。
语法
参数
返回值
返回与 time_string 对应的 DateTime 值;如果输入无法解析,则返回零日期/日期时间(1970-01-01 或 1970-01-01 00:00:00)。DateTime
示例
用法示例
parseDateTimeBestEffortUS
引入于:v1.1
对于 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
示例
用法示例
parseDateTimeBestEffortUSOrNull
引入于:v1.1
与 parseDateTimeBestEffortUS 函数相同,只是当遇到无法处理的日期格式时会返回 NULL。
对于 ISO 日期格式,此函数的行为与 parseDateTimeBestEffort 相同,但在存在歧义的情况下会优先采用美国日期格式,并在解析出错时返回 NULL。
语法
参数
返回值
将 time_string 按美国格式优先解析为 DateTime 返回;若输入无法解析,则返回 NULL。DateTime 或 NULL
示例
用法示例
parseDateTimeBestEffortUSOrZero
引入自:v1.1
与 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
示例
用法示例
parseDateTimeInJodaSyntax
引入版本:v23.3
根据 Joda 日期格式字符串解析日期和时间字符串。
此函数是 formatDateTimeInJodaSyntax 的逆函数。
它使用 Joda 风格的格式字符串解析一个 String 类型的参数,返回一个 DateTime 类型的值。
有关格式模式,请参考 Joda Time 文档。
语法
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 使用 Joda 语法指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回根据 Joda 风格的格式字符串从输入字符串解析得到的 DateTime。DateTime
示例
使用示例
parseDateTimeInJodaSyntaxOrNull
自 v23.3 起引入
与 parseDateTimeInJodaSyntax 相同,但当遇到无法解析的日期格式时返回 NULL。
语法
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 用于按照 Joda 语法指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime,若解析失败则返回 NULL。Nullable(DateTime)
示例
用法示例
parseDateTimeInJodaSyntaxOrZero
引入于:v23.3
与 parseDateTimeInJodaSyntax 相同,但在遇到无法解析的日期格式时返回零日期值。
语法
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 使用 Joda 语法指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime,如果解析失败则返回零值的 DateTime。DateTime
示例
用法示例
parseDateTimeOrNull
自 v23.3 起引入
与 parseDateTime 相同,但在遇到无法解析的日期格式时返回 NULL。
语法
别名: str_to_date
参数
time_string— 要解析为 DateTime 的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime,如果解析失败,则返回 NULL。Nullable(DateTime)
示例
用法示例
parseDateTimeOrZero
引入版本:v23.3
与 parseDateTime 相同,但在遇到无法解析的日期格式时返回零日期值。
语法
参数
time_string— 将被解析为 DateTime 的字符串。Stringformat— 指定如何解析time_string的格式字符串。Stringtimezone— 可选。时区。String
返回值
返回从输入字符串解析得到的 DateTime,如果解析失败则返回零值 DateTime。DateTime
示例
用法示例
reinterpret
自 v1.1 起引入
对给定值 x 复用其在内存中的原始字节序列,并将其重新解释为目标类型。
语法
参数
返回值
目标类型的值。Any
示例
用法示例
数组示例
reinterpretAsDate
引入版本:v1.1
将输入值重新解释为一个 Date 值(假定为小端字节序),表示自 Unix 纪元起点 1970-01-01 以来经过的天数。
语法
参数
返回值
日期。Date
示例
用法示例
reinterpretAsDateTime
引入于:v1.1
将输入值重新解释为一个 DateTime 值(假设为小端序),该值表示自 Unix 纪元(1970-01-01)开始以来的天数。
语法
参数
返回值
日期和时间。DateTime
示例
用法示例
reinterpretAsFixedString
自 v1.1 引入
将输入值重新解释为定长字符串(假定为小端字节序)。 末尾的空字节会被忽略,例如,对于 UInt32 值 255,该函数返回仅包含单个字符的字符串。
语法
参数
返回值
定长字符串,其中的字节表示 x。FixedString
示例
使用示例
reinterpretAsFloat32
引入版本:v1.1
将输入值重新解释为 Float32 类型的值。
与 CAST 不同,该函数不尝试保留原始值——如果目标类型无法表示输入值,则输出结果未定义。
语法
参数
返回值
返回重新解释后的 x 值。Float32
示例
用法示例
reinterpretAsFloat64
首次在 v1.1 中引入
将输入值重新解释为 Float64 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出是未定义的。
语法
参数
返回值
返回按 Float64 重新解释后的值 x。Float64
示例
使用示例
reinterpretAsInt128
引入版本:v1.1
将输入值按 Int128 类型重新解释。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,其结果未定义。
语法
参数
返回值
返回按 Int128 重新解释后的值 x。Int128
示例
使用示例
reinterpretAsInt16
引入版本:v1.1
将输入值重新解释为 Int16 类型的值。
与 CAST 不同,函数不会尝试保留原始值——如果目标类型无法表示输入值,输出是未定义的。
语法
参数
返回值
返回按 Int16 重新解释后的值 x。Int16
示例
使用示例
reinterpretAsInt256
自 v1.1 引入
将输入值重新解释为 Int256 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出结果未定义。
语法
参数
返回值
返回按新类型重新解释后的值 x。Int256
示例
用法示例
reinterpretAsInt32
引入版本:v1.1
将输入值重新解释为 Int32 类型的值。
与 CAST 不同,函数不会尝试保留原始值——如果目标类型无法表示该输入值,则输出结果未定义。
语法
参数
返回值
返回按 Int32 重解释后的值 x。Int32
示例
使用示例
reinterpretAsInt64
引入版本:v1.1
将输入值重新解释为 Int64 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出结果未定义。
语法
参数
返回值
返回按新类型重新解释后的值 x。Int64
示例
使用示例
reinterpretAsInt8
引入于:v1.1
将输入值重新解释为 Int8 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出未定义。
语法
参数
返回值
返回将 x 重新解释后的值。Int8
示例
用法示例
reinterpretAsString
引入版本:v1.1
将输入值重新解释为字符串(假定为小端字节序)。 末尾的空字节会被忽略,例如,对于 UInt32 值 255,该函数会返回仅包含一个字符的字符串。
语法
参数
返回值
包含表示 x 的字节序列的字符串。String
示例
用法示例
reinterpretAsUInt128
引入版本:v1.1
将输入值重新解释为 UInt128 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出是未定义的。
语法
参数
返回值
返回重新解释后的值 x。UInt128
示例
使用示例
reinterpretAsUInt16
自 v1.1 引入
将输入值重新解释为 UInt16 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示该输入值,则输出是未定义的。
语法
参数
返回值
返回按 UInt16 重新解释后的值 x。UInt16
示例
使用示例
reinterpretAsUInt256
自 v1.1 起引入
将输入值重新解释为 UInt256 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入类型,则输出未定义。
语法
参数
返回值
返回将 x 重新解释为 UInt256 类型后的值。
示例
用法示例
reinterpretAsUInt32
引入于:v1.1
将输入值按 UInt32 类型重新解释。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出是未定义的。
语法
参数
返回值
返回被重新解释后的 x 值。UInt32
示例
用法示例
reinterpretAsUInt64
引入版本:v1.1
将输入值按 UInt64 类型重新解释为该类型的值。
与 CAST 不同,函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出是未定义的。
语法
参数
返回值
返回按 UInt64 重新解释后的 x 的值。UInt64
示例
使用示例
reinterpretAsUInt8
自 v1.1 起引入
将输入值重新解释为 UInt8 类型的值。
与 CAST 不同,该函数不会尝试保留原始值——如果目标类型无法表示输入值,则输出未定义。
语法
参数
返回值
返回重新解释后的 x 值,类型为 UInt8。
示例
用法示例
reinterpretAsUUID
自 v1.1 起引入
接受一个 16 字节的字符串,并通过将其分成两个 8 字节部分、按小端字节序解释来返回一个 UUID。如果字符串长度不足,函数的行为等同于在字符串末尾填充所需数量的空字节。如果字符串长度超过 16 字节,则会忽略末尾多余的字节。
语法
参数
fixed_string— 大端序字节串。FixedString
返回值
UUID 类型的值。UUID
示例
字符串转 UUID
toBFloat16
引入版本:v1.1
将输入值转换为 BFloat16 类型的值。 发生错误时抛出异常。
另请参阅:
语法
参数
expr— 求值结果为数字或数字字符串表示的表达式。Expression
返回值
返回一个 16 位 bfloat16 浮点值。BFloat16
示例
用法示例
toBFloat16OrNull
引入版本:v1.1
将一个字符串类型的输入值转换为 BFloat16 类型的值。 如果该字符串不表示浮点数,则函数返回 NULL。
支持的参数:
- 数值的字符串表示。
不支持的参数(返回 NULL):
- 二进制和十六进制数值的字符串表示。
- 数值类型的输入值。
该函数在从字符串表示进行转换时允许静默地损失精度。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回一个 16 位 bfloat16 浮点数值,否则为 NULL。BFloat16 或 NULL
示例
用法示例
toBFloat16OrZero
引入版本:v1.1
将 String 类型的输入值转换为 BFloat16 类型的值。 如果字符串不表示浮点数值,则函数返回 0。
支持的参数:
- 数值的字符串表示。
不支持的参数(返回 0):
- 二进制和十六进制值的字符串表示。
- 数值类型的值。
该函数在从字符串表示进行转换时允许无提示的精度损失。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回一个 16 位 BFloat16(brain floating point)值,否则返回 0。BFloat16
示例
用法示例
toBool
自 v22.2 起引入
将输入值转换为 Bool 类型的值。
语法
参数
expr— 其结果为数字或字符串的表达式。对于字符串,接受 'true' 或 'false'(不区分大小写)。(U)Int*或Float*或String或Expression
返回值
根据参数的求值结果返回 true 或 false。Bool
示例
用法示例
toDate
自 v1.1 引入
将输入值转换为 Date 类型。
支持从 String、FixedString、DateTime 或数值类型进行转换。
语法
参数
x— 要转换的输入值。String或FixedString或DateTime或(U)Int*或Float*
返回值
返回转换后的日期值。Date
示例
将 String 转换为 Date
将 DateTime 转换为 Date
整数转换为 Date
toDate32
首次引入于:v21.9
将参数转换为 Date32 数据类型。
如果值超出范围,toDate32 会返回 Date32 所支持范围的边界值。
如果参数类型为 Date,则会考虑其自身的取值边界。
语法
参数
返回值
返回一个日历日期。Date32
示例
处于有效范围内
超出有效范围
toDate32OrDefault
引入版本:v21.11
将参数转换为 Date32 数据类型。如果值超出取值范围,toDate32OrDefault 会返回 Date32 支持的下边界值。如果参数的类型是 Date,则会同时考虑该类型的取值边界。当接收到无效参数时,返回默认值。
语法
参数
返回值
如果解析成功,则返回 Date32 类型的值;否则,如果传入了默认值则返回该默认值,如果未传入则返回 1900-01-01。Date32
示例
成功的转换
转换失败
toDate32OrNull
引入版本:v21.9
将输入值转换为 Date32 类型的值,但在传入无效参数时返回 NULL。
与 toDate32 相同,只是当传入无效参数时返回 NULL。
语法
参数
x— 日期的字符串形式。String
返回值
成功时返回一个 Date32 值,否则返回 NULL。Date32 或 NULL
示例
使用示例
toDate32OrZero
引入于:v21.9
将输入值转换为 Date32 类型的值,但在接收到无效参数时返回 Date32 的下限值。 与 toDate32 相同,但在接收到无效参数时返回 Date32 的下限值。
另请参阅:
语法
参数
x— 日期的字符串形式。String
返回值
成功时返回一个 Date32 值,否则返回 Date32 的下界值(1900-01-01)。Date32
示例
用法示例
toDateOrDefault
自 v21.11 引入
类似于 toDate,但在转换失败时,会返回一个默认值:如果指定了第二个参数,则返回该参数的值;否则返回 Date 的下界。
语法
参数
返回值
成功时返回类型为 Date 的值;否则,如果传入了默认值则返回该默认值,未传入时返回 1970-01-01。Date
示例
转换成功
转换失败
toDateOrNull
引入版本:v1.1
将输入值转换为 Date 类型的值,但在传入无效参数时返回 NULL。
与 toDate 相同,但在传入无效参数时返回 NULL。
语法
参数
x— 日期的字符串表示形式。String
返回值
成功时返回一个 Date 类型的值,否则返回 NULL。Date 或 NULL
示例
用法示例
toDateOrZero
引入版本:v1.1
将输入值转换为 Date 类型的值,但在接收到无效参数时返回 Date 的下界值。
与 toDate 相同,但在接收到无效参数时会返回 Date 的下界值。
另请参阅:
语法
参数
x— 日期的字符串表示。String
返回值
成功时返回一个 Date 类型的值,否则返回 Date 类型的下界值(1970-01-01)。Date
示例
用法示例
toDateTime
引入于:v1.1
将输入值转换为 DateTime 类型。
如果 expr 是数字,则将其解释为自 Unix 纪元(Unix Epoch)开始以来经过的秒数(即 Unix 时间戳)。
如果 expr 是 String,则可能被解释为 Unix 时间戳,或者是日期/日期时间的字符串表示。
因此,由于存在歧义,明确禁用了对长度较短的数字字符串(最多 4 位)的解析,例如字符串 '1999' 既可以表示年份(不完整的 Date / DateTime 字符串表示),也可以表示 Unix 时间戳。而长度更长的数字字符串是允许的。
语法
参数
返回值
返回日期时间值。DateTime
示例
用法示例
toDateTime32
引入于:v20.9
将输入值转换为 DateTime 类型。
支持从 String、FixedString、Date、Date32、DateTime 或数值类型((U)Int*、Float*、Decimal)进行转换。
与 DateTime 相比,DateTime32 提供了更大的取值范围,支持从 1900-01-01 到 2299-12-31 的日期。
语法
参数
x— 要转换的输入值。String或FixedString或UInt*或Float*或Date或DateTime或DateTime64timezone— 可选。用于返回的DateTime值的时区。String
返回值
返回转换后的值。DateTime
示例
值在有效范围内
以指定精度的小数形式
带时区
toDateTime64
引入版本:v20.1
将输入值转换为 DateTime64 类型的值。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expressionscale— 刻度(精度):10^(-scale) 秒。UInt8timezone— 可选。指定的DateTime64对象所使用的时区。String
返回值
返回具有亚秒级精度的日历日期和时间。DateTime64
示例
值在范围内时
作为指定精度的 Decimal
含时区
toDateTime64OrDefault
自 v21.11 引入
与 toDateTime64 类似,此函数将输入值转换为 DateTime64 类型的值, 但在收到无效参数时,会返回 DateTime64 的默认值 或调用方提供的默认值。
语法
参数
expr— 返回数字或其字符串表示形式的表达式。String或(U)Int*或Float*scale— 刻度大小(精度):10^-precision 秒。UInt8timezone— 可选。时区。Stringdefault— 可选。解析失败时返回的默认值。DateTime64
返回值
如果转换成功,则返回 DateTime64 类型的值;否则在提供默认值时返回该默认值,未提供时返回 1970-01-01 00:00:00.000。DateTime64
示例
转换成功
转换失败
toDateTime64OrNull
引入于:v20.1
将输入值转换为 DateTime64 类型的值,但在传入无效参数时返回 NULL。
与 toDateTime64 相同,但在传入无效参数时返回 NULL。
语法
参数
x— 包含日期、时间且具有子秒精度的字符串表示。String
返回值
成功时返回一个 DateTime64 值,否则返回 NULL。DateTime64 或 NULL
示例
用法示例
toDateTime64OrZero
自 v20.1 引入
将输入值转换为 DateTime64 类型的值,但如果接收到无效参数,则返回 DateTime64 的下界值。 与 toDateTime64 相同,但如果接收到无效参数,则返回 DateTime64 的下界值。
另请参阅:
语法
参数
x— 具有时间和子秒级精度的日期的字符串表示。String
返回值
成功时返回 DateTime64 值,否则返回 DateTime64 的下界(1970-01-01 00:00:00.000)。DateTime64
示例
用法示例
toDateTimeOrDefault
引入版本:v21.11
与 toDateTime 类似,但在解析失败时会返回一个默认值。该默认值要么是第三个参数(如果指定),否则为 DateTime 的下边界值。
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。String或(U)Int*或Float*timezone— 可选。时区。Stringdefault— 可选。解析失败时返回的默认值。DateTime
返回值
如果解析成功,则返回 DateTime 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 1970-01-01 00:00:00。DateTime
示例
转换成功
转换失败
toDateTimeOrNull
引入于:v1.1
将输入值转换为 DateTime 类型的值,但在传入无效参数时返回 NULL。
与 toDateTime 相同,但在传入无效参数时返回 NULL。
语法
参数
x— 包含时间的日期字符串表示形式。String
返回值
如果解析成功,则返回一个 DateTime 值,否则返回 NULL。DateTime 或 NULL
示例
使用示例
toDateTimeOrZero
自 v1.1 起提供
将输入值转换为 DateTime 类型的值,但在接收到无效参数时返回 DateTime 的最小值。 与 toDateTime 相同,但在接收到无效参数时返回 DateTime 的最小值。
语法
参数
x— 含时间部分的日期字符串表示。String
返回值
成功时返回一个 DateTime 值,否则返回 DateTime 的下限(1970-01-01 00:00:00)。DateTime
示例
使用示例
toDecimal128
引入于:v18.12
将输入值转换为类型为 Decimal(38, S) 且 scale 为 S 的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数:
- 取值为
NaN和Inf(不区分大小写)的 Float* 值或其字符串表示。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal128('0xc0fe', 1);。
如果 expr 的值超出 Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),可能会发生溢出。
小数部分中多余的数字会被丢弃(不会四舍五入)。
整数部分中多余的数字将导致异常。
在处理 Float32/Float64 输入时,由于运算是使用浮点指令完成的,转换会丢弃多余的数字,并可能产生非预期结果。
例如:toDecimal128(1.15, 2) 等于 1.14,因为在浮点数中 1.15 * 100 的结果是 114.99。
可以使用字符串(String)输入,使运算基于底层整数类型:toDecimal128('1.15', 2) = 1.15
语法
参数
expr— 返回一个数字或数字字符串表示形式的表达式。ExpressionS— 介于 0 和 38 之间的刻度(scale)参数,用于指定数字小数部分的位数上限。UInt8
返回值
返回类型为 Decimal(38, S) 的值。Decimal128(S)
示例
使用示例
toDecimal128OrDefault
引入版本:v21.11
与 toDecimal128 类似,此函数将输入值转换为类型为 Decimal(38, S) 的值,但在发生错误时返回默认值。
语法
参数
expr— 数字的字符串表示形式。StringS— 取值范围为 0 到 38 的 scale 参数,用于指定数值小数部分最多可以包含的位数。UInt8default— 可选。解析为 Decimal128(S) 类型失败时要返回的默认值。Decimal128(S)
返回值
成功时返回 Decimal(38, S) 类型的值;否则如果传入了默认值则返回该默认值,如果未传入默认值则返回 0。Decimal128(S)
示例
转换成功
转换失败
toDecimal128OrNull
引入于:v20.1
将输入值转换为 Decimal(38, S) 类型的值,但在出错时返回 NULL。
类似于 toDecimal128,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示形式。
- 类型为 Float* 的值或其字符串表示形式。
不支持的参数(返回 NULL):
- Float* 值
NaN和Inf的值或其字符串表示形式(不区分大小写)。 - 二进制和十六进制值的字符串表示形式。
- 超出
Decimal128范围的值:(-1*10^(38 - S), 1*10^(38 - S))。
另请参阅:
语法
参数
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 和 38 之间的标度(scale)参数,用于指定数字小数部分可以包含的位数。UInt8
返回值
成功时返回 Decimal(38, S) 值,否则返回 NULL。Decimal128(S) 或 NULL
示例
用法示例
toDecimal128OrZero
引入版本:v20.1
将输入值转换为 Decimal(38, S) 类型的值,但在发生错误时返回 0。
类似于 toDecimal128 但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数(返回 0):
- 类型为 Float* 的
NaN和Inf值或其字符串表示(不区分大小写)。 - 二进制值和十六进制值的字符串表示。
如果输入值超出 Decimal128 的范围:(-1*10^(38 - S), 1*10^(38 - S)),函数返回 0。
语法
参数
expr— 返回数值或其字符串表示的表达式。ExpressionS— 取值范围为 0 到 38 的 scale 参数,用于指定数值小数部分最多可以有多少位数字。UInt8
返回值
成功时返回一个 Decimal(38, S) 值,否则返回 0。Decimal128(S)
示例
基本用法
toDecimal256
引入版本:v20.8
将输入值转换为 Decimal(76, S) 类型、scale 为 S 的值。若发生错误则抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数:
- 取值为
NaN和Inf(不区分大小写)的 Float* 值或其字符串表示。 - 二进制和十六进制值的字符串表示,例如:
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
语法
参数
expr— 返回数字或其字符串表示形式的表达式。ExpressionS— 取值在 0 到 76 之间的 scale 参数,用于指定数字小数部分最多可以有多少位。UInt8
返回值
返回类型为 Decimal(76, S) 的值。Decimal256(S)
示例
用法示例
toDecimal256OrDefault
自 v21.11 起引入
与 toDecimal256 类似,此函数将输入值转换为 Decimal(76, S) 类型的值,但在出错时返回默认值。
语法
参数
expr— 数字的字符串表示形式。StringS— 介于 0 和 76 之间的 scale 参数,指定数字小数部分最多可以有多少位。UInt8default— 可选。解析为 Decimal256(S) 类型失败时返回的默认值。Decimal256(S)
返回值
成功时返回类型为 Decimal(76, S) 的值,否则如果传入了默认值则返回该默认值,未传入则返回 0。Decimal256(S)
示例
转换成功
转换失败
toDecimal256OrNull
引入版本:v20.8
将输入值转换为 Decimal(76, S) 类型的值,但在出错时返回 NULL。
类似于 toDecimal256,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示形式。
- 类型为 Float* 的值或其字符串表示形式。
不支持的参数(返回 NULL):
- Float* 值
NaN和Inf(大小写不敏感)的值或字符串表示形式。 - 二进制和十六进制值的字符串表示形式。
- 超出
Decimal256边界的值:(-1 * 10^(76 - S), 1 * 10^(76 - S))。
参见:
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。ExpressionS— 介于 0 和 76 之间的 scale 参数,用于指定数字的小数部分最多可以有多少位。UInt8
返回值
转换成功时返回一个 Decimal(76, S) 值,否则返回 NULL。Decimal256(S) 或 NULL
示例
用法示例
toDecimal256OrZero
引入于:v20.8
将输入值转换为类型为 Decimal(76, S) 的值,但在出错时返回 0。
类似于 toDecimal256,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数(返回 0):
- Float* 类型的
NaN和Inf值或其字符串表示(不区分大小写)。 - 二进制值和十六进制值的字符串表示。
如果输入值超出 Decimal256 的范围:(-1*10^(76 - S), 1*10^(76 - S)),则函数返回 0。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。ExpressionS— 介于 0 到 76 之间的 scale 参数,用于指定数字小数部分可以包含的位数。UInt8
返回值
成功时返回 Decimal(76, S) 类型的值,否则返回 0。Decimal256(S)
示例
用法示例
toDecimal32
引入于:v18.12
将输入值转换为 Decimal(9, S) 类型、标度为 S 的值。若发生错误则抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数:
- 值或字符串表示为 Float* 的
NaN和Inf(不区分大小写)。 - 二进制和十六进制值的字符串表示,例如:
SELECT toDecimal32('0xc0fe', 1);。
如果 expr 的值超出 Decimal32 的范围:(-1*10^(9 - S), 1*10^(9 - S)),则可能发生溢出。
小数部分多余的数字会被丢弃(不会四舍五入)。
整数部分多余的数字会导致抛出异常。
当使用 Float32/Float64 作为输入时,由于运算是通过浮点指令执行的,转换会丢弃多余的数字,并且可能出现非预期的行为。
例如:toDecimal32(1.15, 2) 等于 1.14,因为在浮点数中 1.15 * 100 等于 114.99。
可以使用 String 作为输入,以便运算基于底层整数类型:toDecimal32('1.15', 2) = 1.15
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。ExpressionS— 介于 0 和 9 之间的标度参数,指定数字小数部分可以包含的位数。UInt8
返回值
返回类型为 Decimal(9, S) 的值。Decimal32(S)
示例
用法示例
toDecimal32OrDefault
自 v21.11 引入
与 toDecimal32 类似,此函数将输入值转换为 Decimal(9, S) 类型的值,但在出错时返回默认值。
语法
参数
expr— 数字的字符串表示形式。StringS— 介于 0 和 9 之间的小数位数参数,指定数字小数部分最多可以有多少位。UInt8default— 可选。如果解析为 Decimal32(S) 类型失败,返回的默认值。Decimal32(S)
返回值
解析成功时返回类型为 Decimal(9, S) 的值,否则返回传入的默认值;如果未传入默认值,则返回 0。Decimal32(S)
示例
转换成功
转换失败
toDecimal32OrNull
自 v20.1 起引入
将输入值转换为 Decimal(9, S) 类型的值,但在出错时返回 NULL。
与 toDecimal32 类似,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- (U)Int* 类型的值或其字符串表示。
- Float* 类型的值或其字符串表示。
不支持的参数(返回 NULL):
- Float* 类型的
NaN和Inf值或其字符串表示(不区分大小写)。 - 二进制和十六进制值的字符串表示。
- 超出
Decimal32范围的值:(-1*10^(9 - S), 1*10^(9 - S))。
另请参阅:
语法
参数
expr— 返回数值或数值字符串表示形式的表达式。ExpressionS— 介于 0 到 9 之间的刻度参数,指定数字小数部分可以具有的位数。UInt8
返回值
成功时返回一个 Decimal(9, S) 值,否则返回 NULL。Decimal32(S) 或 NULL
示例
使用示例
toDecimal32OrZero
引入于:v20.1
将输入值转换为类型为 Decimal(9, S) 的值,但在出错时返回 0。
类似于 toDecimal32,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数(返回 0):
- 类型为 Float* 的
NaN和Inf值或其字符串表示(不区分大小写)。 - 二进制和十六进制值的字符串表示。
如果输入值超出 Decimal32 的范围:(-1*10^(9 - S), 1*10^(9 - S)),则函数返回 0。
语法
参数
expr— 返回一个数字或数字的字符串表示形式的表达式。ExpressionS— 介于 0 和 9 之间的 scale 参数,用于指定数值小数部分的位数。UInt8
返回值
转换成功时返回 Decimal(9, S) 值,否则返回 0。Decimal32(S)
示例
用法示例
toDecimal64
引入于:v18.12
将输入值转换为类型为 Decimal(18, S)、小数位数为 S 的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数:
- Float* 类型中的
NaN和Inf值及其字符串表示(不区分大小写)。 - 二进制和十六进制值的字符串表示,例如
SELECT toDecimal64('0xc0fe', 1);。
如果 expr 的值超出 Decimal64 的范围:(-1*10^(18 - S), 1*10^(18 - S)),则可能发生溢出。
小数部分中过多的数字会被丢弃(不进行四舍五入)。
整数部分中过多的数字将导致异常。
在处理 Float32/Float64 输入时,由于转换操作是使用浮点指令执行的,会丢弃额外的数位,并且在实际行为上可能与预期不符。
例如:toDecimal64(1.15, 2) 等于 1.14,因为在浮点运算中 1.15 * 100 的结果是 114.99。
你可以使用 String 输入,以便这些操作使用底层的整数类型:toDecimal64('1.15', 2) = 1.15
语法
参数
expr— 返回数值或其字符串表示形式的表达式。ExpressionS— 介于 0 到 18 之间的刻度参数,用于指定数值小数部分可以包含的位数。UInt8
返回值
返回一个 Decimal 值。Decimal(18, S)
示例
用法示例
toDecimal64OrDefault
自 v21.11 起提供
与 toDecimal64 类似,此函数将输入值转换为类型为 Decimal(18, S) 的值,但在出错时返回默认值。
语法
参数
expr— 数字的字符串表示形式。StringS— 介于 0 和 18 之间的小数位数参数,指定数字小数部分最多可以包含的位数。UInt8default— 可选。将值解析为 Decimal64(S) 类型失败时返回的默认值。Decimal64(S)
返回值
解析成功时返回类型为 Decimal(18, S) 的值;否则,如果传入了默认值则返回该默认值,否则返回 0。Decimal64(S)
示例
成功转换
转换失败
toDecimal64OrNull
引入自:v20.1
将输入值转换为类型为 Decimal(18, S) 的值,但在出错时返回 NULL。
类似于 toDecimal64,但在转换出错时返回 NULL 而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值或其字符串表示。
不支持的参数(返回 NULL):
- Float* 类型值
NaN和Inf(不区分大小写)或其字符串表示。 - 二进制和十六进制值的字符串表示。
- 超出
Decimal64范围的值:(-1*10^(18 - S), 1*10^(18 - S))。
另请参阅:
语法
参数
expr— 返回数字或其字符串形式的表达式。ExpressionS— 介于 0 到 18 之间的小数位精度参数,用于指定数字小数部分最多可以有多少位数字。UInt8
返回值
成功时返回一个 Decimal(18, S) 值,否则返回 NULL。Decimal64(S) 或 NULL
示例
用法示例
toDecimal64OrZero
引入于:v20.1
将输入值转换为类型为 Decimal(18, S) 的值,但在出错时返回 0。
类似于 toDecimal64,但在转换出错时返回 0,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示形式。
- 类型为 Float* 的值或其字符串表示形式。
不支持的参数(返回 0):
- 值为
NaN和Inf(不区分大小写)的 Float* 值或其字符串表示形式。 - 二进制值和十六进制值的字符串表示形式。
如果输入值超出 Decimal64 的范围:(-1*10^(18 - S), 1*10^(18 - S)),函数将返回 0。
另请参阅:
语法
参数
expr— 返回数值或其字符串表示形式的表达式。ExpressionS— 介于 0 和 18 之间的 scale 参数,用于指定数值小数部分的小数位数。UInt8
返回值
成功时返回 Decimal(18, S) 类型的值,否则返回 0。Decimal64(S)
示例
用法示例
toDecimalString
引入版本:v23.3
将数值转换为带有指定小数位数的 String。
该函数会将输入值四舍五入到指定的小数位数。如果输入值的小数位少于指定的位数,则在小数部分补零,以达到精确指定的小数位数。
语法
参数
number— 要转换为字符串的数值。可以是任意数值类型(Int、UInt、Float、Decimal)。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalscale— 小数部分要显示的位数。如有必要,结果会被四舍五入。UInt8
返回值
返回一个字符串形式的数值表示,且小数位数严格等于指定的位数。String
示例
对数字进行舍入并格式化
零填充
不同数值类型
toFixedString
引入版本:v1.1
将一个 String 参数转换为 FixedString(N) 类型(长度固定为 N 的字符串)。
如果字符串的字节数少于 N,则在右侧用空字节进行填充。 如果字符串的字节数多于 N,则会抛出异常。
语法
参数
s— 要转换的字符串。StringN— 结果 FixedString 的长度。const UInt*
返回值
返回长度为 N 的 FixedString。FixedString(N)
示例
用法示例
toFloat32
引入于:v1.1
将输入值转换为 Float32 类型的值。 在出错时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值。
- (U)Int8/16/32/128/256 的字符串形式。
- 类型为 Float* 的值,包括
NaN和Inf。 - Float* 的字符串形式,包括
NaN和Inf(不区分大小写)。
不支持的参数:
- 二进制和十六进制值的字符串形式,例如
SELECT toFloat32('0xc0fe');。
另请参阅:
语法
参数
expr— 一个表达式,返回一个数字或该数字的字符串表示形式。Expression
返回值
返回一个 32 位浮点值。Float32
示例
用法示例
toFloat32OrDefault
引入版本:v21.11
与 toFloat32 类似,此函数会将输入值转换为 Float32 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
解析成功时返回 Float32 类型的值;否则,如果传入了默认值则返回该默认值,如果未传入则返回 0。Float32
示例
成功转换
转换失败
toFloat32OrNull
引入版本:v1.1
将输入值转换为 Float32 类型的值,但在出错时返回 NULL。
类似于 toFloat32,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值。
- (U)Int8/16/32/128/256 的字符串表示。
- 类型为 Float* 的值,包括
NaN和Inf。 - Float* 的字符串表示,包括
NaN和Inf(不区分大小写)。
不支持的参数(返回 NULL):
- 二进制和十六进制值的字符串表示,例如:
SELECT toFloat32OrNull('0xc0fe');。 - 无效的字符串格式。
另请参阅:
语法
参数
x— 数字的字符串表示。String
返回值
如果转换成功,返回 32 位浮点数,否则返回 NULL。Float32 或 NULL
示例
使用示例
toFloat32OrZero
引入版本:v1.1
将输入值转换为 Float32 类型的值,但在发生错误时返回 0。
类似于 toFloat32,但在转换出错时返回 0 而不是抛出异常。
另请参阅:
语法
参数
x— 数字的字符串形式。String
返回值
成功时返回 32 位浮点数值,否则返回 0。Float32
示例
用法示例
toFloat64
引入于:v1.1
将输入值转换为 Float64 类型的值。
在发生错误时抛出异常。
支持的参数类型:
- 类型为 (U)Int* 的值。
- (U)Int8/16/32/128/256 的字符串形式。
- 类型为 Float* 的值,包括
NaN和Inf。 - 类型为 Float* 的字符串形式,包括
NaN和Inf(不区分大小写)。
不支持的参数类型:
- 二进制和十六进制值的字符串形式,例如:
SELECT toFloat64('0xc0fe');。
另请参阅:
语法
参数
expr— 其结果为数字或数字的字符串表示形式的表达式。Expression
返回值
返回 64 位浮点数值。Float64
示例
使用示例
toFloat64OrDefault
自 v21.11 引入
与 toFloat64 类似,此函数将输入值转换为 Float64 类型的值,但在出错时返回默认值。
如果未传递 default 参数,则在出错时返回 0。
语法
参数
返回值
转换成功时返回 Float64 类型的值;否则,如果传入了默认值则返回该默认值,否则返回 0。Float64
示例
成功的转换
转换失败
toFloat64OrNull
引入版本:v1.1
将输入值转换为 Float64 类型的值,但在发生错误时返回 NULL。
类似于 toFloat64,但在转换出错时返回 NULL,而不是抛出异常。
支持的参数:
- 类型为 (U)Int* 的值。
- (U)Int8/16/32/128/256 的字符串形式。
- 类型为 Float* 的值,包括
NaN和Inf。 - 类型为 Float* 的字符串形式,包括
NaN和Inf(不区分大小写)。
不支持的参数(返回 NULL):
- 二进制和十六进制值的字符串形式,例如
SELECT toFloat64OrNull('0xc0fe');。 - 无效的字符串格式。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
如果转换成功,返回 64 位浮点数,否则返回 NULL。Float64 或 NULL
示例
使用示例
toFloat64OrZero
引入于:v1.1
将输入值转换为 Float64 类型的值,但在发生错误时返回 0。
其行为类似于 toFloat64,但在转换出错时返回 0,而不是抛出异常。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
成功时返回 64 位浮点数值,否则返回 0。Float64
示例
用法示例
toInt128
引入于:v1.1
将输入值转换为 Int128 类型的值。 出错时抛出异常。 该函数采用向零舍入,这意味着会截断数字的小数部分。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt128('0xc0fe');。
如果输入值不能在 Int128 的范围内表示,结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回一个 128 位整数值。Int128
示例
使用示例
toInt128OrDefault
引入版本:v21.11
与 toInt128 类似,此函数将输入值转换为 Int128 类型的值,但在出错时返回默认值。
如果未传入 default 参数,则在出错时返回 0。
语法
参数
返回值
如果转换成功,则返回 Int128 类型的值;否则,如果提供了默认值则返回该默认值,如果未提供则返回 0。Int128
示例
成功转换
转换失败
toInt128OrNull
引入版本:v20.8
与 toInt128 类似,此函数将输入值转换为 Int128 类型的值,但在发生错误时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 NULL):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt128OrNull('0xc0fe');。
如果输入值不能在 Int128 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回类型为 Int128 的值,如果转换失败则返回 NULL。Int128 或 NULL
示例
用法示例
toInt128OrZero
自 v20.8 引入
将输入值转换为 Int128 类型,但在出错时返回 0。
类似于 toInt128,但会返回 0 而不是抛出异常。
另请参阅:
语法
参数
返回值
返回转换后的输入值,如果转换失败则返回 0。Int128
示例
使用示例
转换失败时返回 0
toInt16
引入版本:v1.1
将输入值转换为 Int16 类型的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串形式。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt16('0xc0fe');。
如果输入值不能在 Int16 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toInt16(32768) == -32768;。
该函数使用向零舍入,即截断数字的小数部分。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回一个 16 位整数值。Int16
示例
用法示例
toInt16OrDefault
引入于:v21.11
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在发生错误时返回默认值。
如果未指定 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果转换成功,则返回 Int16 类型的值;否则在传入默认值时返回该默认值,未传入则返回 0。Int16
示例
转换成功
转换失败
toInt16OrNull
引入版本:v1.1
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 NULL):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt16OrNull('0xc0fe');。
如果输入值无法在 Int16 的取值范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 Int16 类型的值;如果转换失败,则返回 NULL。Int16 或 NULL
示例
用法示例
toInt16OrZero
引入版本:v1.1
与 toInt16 类似,此函数将输入值转换为 Int16 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt16OrZero('0xc0fe');。
如果输入值不能在 Int16 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回 Int16 类型的值,如果转换失败则返回 0。Int16
示例
用法示例
toInt256
引入版本:v1.1
将输入值转换为 Int256 类型的值。 出错时抛出异常。 该函数使用趋零舍入,这意味着会截断数值的小数部分。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt256('0xc0fe');。
如果输入值无法在 Int256 的数值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。Expression
返回值
返回一个 256 位整数值。Int256
示例
使用示例
toInt256OrDefault
引入于:v21.11
与 toInt256 类似,此函数将输入值转换为 Int256 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果转换成功,则返回 Int256 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。Int256
示例
成功转换
转换失败
toInt256OrNull
引入于:v20.8
与 toInt256 类似,此函数将输入值转换为 Int256 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 NULL):
- Float* 浮点值的字符串表示,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示,例如
SELECT toInt256OrNull('0xc0fe');。
如果输入值无法在 Int256 的取值范围内表示,则结果会发生溢出或下溢。 这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回 Int256 类型的值;如果转换失败,则返回 NULL。Int256 或 NULL
示例
使用示例
toInt256OrZero
引入于:v20.8
将输入值转换为 Int256 类型,但在发生错误时返回 0。
类似于 toInt256,但不会抛出异常,而是返回 0。
另请参阅:
语法
参数
返回值
返回转换后的值;如果转换失败,则返回 0。Int256
示例
使用示例
转换失败时返回 0
toInt32
引入于:v1.1
将输入值转换为 Int32 类型的值。
如果发生错误,则抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt32('0xc0fe');。
如果输入值不能在 Int32 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
例如:SELECT toInt32(2147483648) == -2147483648;
该函数使用向零舍入,即截断数字的小数部分。
另请参阅:
语法
参数
expr— 返回数值或其字符串形式的表达式。Expression
返回值
返回一个 32 位整数值。Int32
示例
用法示例
toInt32OrDefault
引入于:v21.11
与 toInt32 类似,此函数将输入值转换为 Int32 类型的值,但在出错时返回默认值。
如果未指定 default 值,则在出错时返回 0。
语法
参数
返回值
成功时返回 Int32 类型的值,否则如果传入了默认值则返回该默认值,如果未传入则返回 0。Int32
示例
转换成功
转换失败
toInt32OrNull
引入自:v1.1
与 toInt32 类似,此函数将输入值转换为 Int32 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int* 的字符串形式。
不支持的参数(返回 NULL):
- Float* 值的字符串形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串形式,例如
SELECT toInt32OrNull('0xc0fe');。
如果输入值不能在 Int32 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 Int32 类型的值;如果转换失败则返回 NULL。Int32 或 NULL
示例
用法示例
toInt32OrZero
引入于:v1.1
与 toInt32 类似,此函数将输入值转换为 Int32 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 0):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt32OrZero('0xc0fe');。
如果输入值无法在 Int32 的范围内表示,则结果会发生溢出或下溢。 这不被视为错误。
另请参阅:
语法
参数
x— 表示数字的字符串。String
返回值
返回 Int32 类型的值;如果转换失败则返回 0。Int32
示例
用法示例
toInt64
引入于:v1.1
将输入值转换为 Int64 类型的值。
如果发生错误,则抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toInt64('0xc0fe');。
如果输入值无法在 Int64 的范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
例如:SELECT toInt64(9223372036854775808) == -9223372036854775808;
该函数使用向零舍入,即会截断数字的小数部分。
另请参阅:
语法
参数
expr— 返回数字或数字字符串表示形式的表达式。支持:类型为 (U)Int* 的值或其字符串表示、类型为 Float* 的值。不支持:类型为 Float* 的值(包括 NaN 和 Inf)的字符串表示,以及二进制值和十六进制值的字符串表示。Expression
返回值
返回 64 位整数值。Int64
示例
用法示例
toInt64OrDefault
引入于:v21.11
与 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
返回值
转换成功时返回 Int64 类型的值;否则,如果传入了默认值则返回默认值,未传入则返回 0。Int64
示例
转换成功
转换失败
toInt64OrNull
引入于:v1.1
与 toInt64 类似,此函数将输入值转换为 Int64 类型的值,但在出错时则返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 NULL):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt64OrNull('0xc0fe');。
如果输入值无法在 Int64 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回 Int64 类型的值,如果转换失败则返回 NULL。Int64 或 NULL
示例
用法示例
toInt64OrZero
自 v1.1 引入
将输入值转换为类型 Int64,但在出错时返回 0。
类似于 toInt64,但在发生错误时返回 0,而不是抛出异常。
另请参阅:
语法
参数
返回值
返回转换后的值,如果转换失败则返回 0。Int64
示例
用法示例
转换失败时返回零
toInt8
引入于:v1.1
将输入值转换为 Int8 类型的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示形式。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt8('0xc0fe');。
如果输入值无法在 Int8 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toInt8(128) == -128;。
该函数使用向零舍入,即截断数字的小数部分。
另请参阅:
语法
参数
expr— 返回数值或其字符串表示形式的表达式。Expression
返回值
返回一个 8 位整数值。Int8
示例
使用示例
toInt8OrDefault
自 v21.11 起引入
与 toInt8 类似,此函数将输入值转换为 Int8 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果转换成功,返回 Int8 类型的值;否则在传入默认值时返回该默认值,未传入则返回 0。Int8
示例
转换成功
转换失败
toInt8OrNull
引入于:v1.1
与 toInt8 类似,此函数将输入值转换为 Int8 类型的值,但在发生错误时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 NULL):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toInt8OrNull('0xc0fe');。
如果输入值无法在 Int8 的取值范围内表示,则结果会发生上溢或下溢。 这不视为错误。
另请参阅:
语法
参数
x— 数字的字符串表示。String
返回值
返回 Int8 类型的值,如果转换失败则返回 NULL。Int8 或 NULL
示例
用法示例
toInt8OrZero
引入于:v1.1
与 toInt8 类似,此函数将输入值转换为类型为 Int8 的值,但在出错时返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toInt8OrZero('0xc0fe');。
如果输入值不能在 Int8 的取值范围内表示,则结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回 Int8 类型的值,如果转换失败则返回 0。Int8
示例
用法示例
toInterval
引入于:v25.4
从数值和单位字符串创建一个 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
返回值
返回指定类型的 Interval 类型值。结果类型取决于单位:IntervalNanosecond、IntervalMicrosecond、IntervalMillisecond、IntervalSecond、IntervalMinute、IntervalHour、IntervalDay、IntervalWeek、IntervalMonth、IntervalQuarter 或 IntervalYear。Interval
示例
使用不同时间单位创建区间
在日期运算中使用间隔
动态创建时间间隔
toIntervalDay
自 v1.1 引入
返回一个长度为 n 天、数据类型为 IntervalDay 的时间间隔。
语法
参数
返回值
返回一个表示 n 天的时间间隔。Interval
示例
用法示例
toIntervalHour
自 v1.1 引入
返回一个 IntervalHour 数据类型的、表示 n 小时的时间间隔。
语法
参数
返回值
返回一个持续 n 小时的时间间隔。Interval
示例
用法示例
toIntervalMicrosecond
引入版本:v22.6
返回一个表示 n 微秒的时间间隔,数据类型为 IntervalMicrosecond。
语法
参数
返回值
返回一个长度为 n 微秒的区间值。Interval
示例
使用示例
toIntervalMillisecond
自 v22.6 起引入
返回一个时长为 n 毫秒、数据类型为 IntervalMillisecond 的时间间隔。
语法
参数
返回值
返回一个长度为 n 毫秒的时间间隔。Interval
示例
用法示例
toIntervalMinute
自 v1.1 版本引入
返回一个由 n 分钟组成、数据类型为 IntervalMinute 的时间间隔。
语法
参数
返回值
返回一个表示 n 分钟的时间间隔。Interval
示例
用法示例
toIntervalMonth
引入版本:v1.1
返回一个长度为 n 个月、数据类型为 IntervalMonth 的时间间隔。
语法
参数
返回值
返回一个表示 n 个月的时间间隔。Interval
示例
用法示例
toIntervalNanosecond
引入于:v22.6
返回一个长度为 n 个纳秒的数据区间,数据类型为 IntervalNanosecond。
语法
参数
返回值
返回一个表示 n 纳秒的时间间隔。Interval
示例
使用示例
toIntervalQuarter
引入版本:v1.1
返回一个表示 n 个季度的 IntervalQuarter 类型的时间间隔。
语法
参数
返回值
返回一个跨越 n 个季度的时间区间。Interval
示例
用法示例
toIntervalSecond
引入版本:v1.1
返回一个长度为 n 秒、数据类型为 IntervalSecond 的时间间隔。
语法
参数
返回值
返回一个持续 n 秒的时间区间。Interval
示例
用法示例
toIntervalWeek
引入版本:v1.1
返回一个表示 n 周的时间间隔,数据类型为 IntervalWeek。
语法
参数
返回值
返回一个持续 n 周的时间间隔。Interval
示例
使用示例
toIntervalYear
引入版本:v1.1
返回一个表示 n 年的 IntervalYear 类型时间间隔。
语法
参数
返回值
返回一个表示 n 年的时间间隔。Interval
示例
用法示例
toLowCardinality
引入于:v18.12
将输入参数转换为相同数据类型的 LowCardinality 版本。
要将 LowCardinality 数据类型转换为普通数据类型,请使用 CAST 函数。
例如:CAST(x AS String)。
语法
参数
返回值
返回将输入值转换为 LowCardinality 数据类型的结果。LowCardinality
示例
使用示例
toString
自 v1.1 起引入
将值转换为其字符串表示。 对于 DateTime 参数,该函数可以接收第二个 String 参数,用于指定时区名称。
语法
参数
返回值
返回输入值的字符串表示形式。String
示例
使用示例
toStringCutToZero
引入版本:v1.1
接受一个 String 或 FixedString 参数,并返回一个 String,其中包含原始字符串的副本,但在第一个空字节处被截断。
空字节(\0)被视为字符串终止符。 此函数适用于处理 C 风格字符串或二进制数据,在这些场景中空字节用于标记有效内容的结束。
语法
参数
s— 要处理的 String 或 FixedString。String或FixedString
返回值
返回一个包含首个空字节(null byte)之前所有字符的 String。String
示例
使用示例
toTime
在 v1.1 版本中引入
将输入值转换为 Time 类型。 支持从 String、FixedString、DateTime 或表示自午夜起经过秒数的数值类型进行转换。
语法
参数
x— 要转换的输入值。String或FixedString或DateTime或(U)Int*或Float*
返回值
返回转换后的值。Time
示例
将 String 转换为 Time 的示例
将 DateTime 转换为 Time
整数到时间的类型转换
toTime64
自 v25.6 起引入
将输入值转换为 Time64 类型。 支持从 String、FixedString、DateTime64,或数值类型(表示自午夜起经过的微秒数)进行转换。 为时间值提供微秒级精度。
语法
参数
x— 要转换的输入值。String或FixedString或DateTime64或(U)Int*或Float*
返回值
返回转换后的输入值,精度为微秒。Time64(6)
示例
将 String 转换为 Time64
将 DateTime64 转换为 Time64
整数到 Time64 的转换
toTime64OrNull
引入于:v25.6
将输入值转换为 Time64 类型的值,但在出错时返回 NULL。
类似于 toTime64,只是当转换出错时返回 NULL,而不是抛出异常。
另请参阅:
语法
参数
x— 具有亚秒级精度的时间的字符串表示。String
返回值
成功时返回 Time64 值,否则返回 NULL。Time64 或 NULL
示例
用法示例
toTime64OrZero
引入版本:v25.6
将输入值转换为 Time64 类型的值,但在发生错误时返回 00:00:00.000。
类似于 toTime64,但在转换出错时返回 00:00:00.000,而不是抛出异常。
语法
参数
x— 具有亚秒级精度的时间字符串表示。String
返回值
如果成功,则返回一个 Time64 值,否则返回 00:00:00.000。Time64
示例
用法示例
toTimeOrNull
引入版本:v1.1
将输入值转换为 Time 类型的值,但在出错时返回 NULL。
类似于 toTime,但在转换出错时返回 NULL,而不是抛出异常。
另见:
语法
参数
x— 表示时间的字符串。String
返回值
成功时返回一个 Time 类型的值,否则返回 NULL。Time 或 NULL
示例
用法示例
toTimeOrZero
自 v1.1 引入
将输入值转换为 Time 类型的值,但在出错时返回 00:00:00。
与 toTime 类似,但在转换出错时返回 00:00:00,而不是抛出异常。
语法
参数
x— 时间的字符串表示形式。String
返回值
成功时返回一个 Time 类型的值,否则返回 00:00:00。Time
示例
使用示例
toUInt128
引入自:v1.1
将输入值转换为 UInt128 类型的值。
在发生错误时抛出异常。
该函数使用向零舍入方式,即截断数值的小数部分。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示形式。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如
SELECT toUInt128('0xc0fe');。
如果输入值无法在 UInt128 的范围内表示,结果会发生上溢或下溢。 这不被视为错误。
另请参阅:
语法
参数
expr— 返回一个数字或数字字符串表示形式的表达式。Expression
返回值
返回一个 128 位无符号整数值。UInt128
示例
用法示例
toUInt128OrDefault
引入版本:v21.11
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
返回值
如果转换成功,则返回 UInt128 类型的值;否则,如果传入了默认值,则返回该默认值;未传入时返回 0。UInt128
示例
成功转换
转换失败
toUInt128OrNull
引入自:v21.6
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在发生错误时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 NULL):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toUInt128OrNull('0xc0fe');。
如果输入值不能在 UInt128 的取值范围内表示,则结果会发生上溢或下溢。
这不会被视为错误。
另请参见:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回 UInt128 类型的值;如果转换失败,则返回 NULL。UInt128 或 NULL
示例
使用示例
toUInt128OrZero
引入于:v1.1
与 toUInt128 类似,此函数将输入值转换为 UInt128 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 0):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toUInt128OrZero('0xc0fe');。
如果输入值不能在 UInt128 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 UInt128 类型的值,如果转换失败,则返回 0。UInt128
示例
用法示例
toUInt16
引入于:v1.1
将输入值转换为 UInt16 类型的值。
出错时会抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt16('0xc0fe');。
如果输入值无法在 UInt16 的取值范围内表示,则结果会发生溢出或下溢。
这不被视为错误。
例如:SELECT toUInt16(65536) == 0;。
该函数采用向零舍入,即截断数值的小数部分。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回一个 16 位无符号整数值。UInt16
示例
使用示例
toUInt16OrDefault
引入于:v21.11
与 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
解析成功时返回 UInt16 类型的值;否则返回传入的默认值;如果未传入默认值,则返回 0。UInt16
示例
成功转换
转换失败
toUInt16OrNull
引入于:v1.1
与 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 NULL):
- Float* 类型值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt16OrNull('0xc0fe');。
如果输入值不能在 UInt16 的范围内表示,结果将发生溢出或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的字符串表示形式。String
返回值
返回 UInt16 类型的值,如果转换失败则返回 NULL。UInt16 或 NULL
示例
用法示例
toUInt16OrZero
引入于:v1.1
与 toUInt16 类似,此函数将输入值转换为 UInt16 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制值和十六进制值的字符串表示,例如:
SELECT toUInt16OrZero('0xc0fe');。
如果输入值无法在 UInt16 的范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回 UInt16 类型的值,如果转换失败则返回 0。UInt16
示例
用法示例
toUInt256
自 v1.1 引入
将输入值转换为 UInt256 类型的值。
在发生错误时抛出异常。
该函数采用向零舍入方式,即会截断数字的小数部分。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt256('0xc0fe');。
如果输入值无法在 UInt256 的取值范围内表示,则结果会发生上溢或下溢。 这不会被视为错误。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回 256 位无符号整数值。UInt256
示例
使用示例
toUInt256OrDefault
引入自:v21.11
与 toUInt256 类似,此函数将输入值转换为 UInt256 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果解析成功,返回 UInt256 类型的值;否则返回传入的默认值;如果未传入默认值,则返回 0。UInt256
示例
转换成功
转换失败
toUInt256OrNull
引入于:v20.8
与 toUInt256 类似,此函数将输入值转换为 UInt256 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 NULL):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt256OrNull('0xc0fe');。
如果输入值不能在 UInt256 的取值范围内表示,结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回类型为 UInt256 的值,如果转换失败则返回 NULL。UInt256 或 NULL
示例
用法示例
toUInt256OrZero
引入版本:v20.8
与 toUInt256 类似,此函数将输入值转换为 UInt256 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int* 的字符串表示。
不支持的参数(返回 0):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt256OrZero('0xc0fe');。
如果输入值无法在 UInt256 的取值范围内表示,则结果会发生溢出或下溢。
这不视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 UInt256 类型的值;如果转换失败,则返回 0。UInt256
示例
使用示例
toUInt32
自 v1.1 起引入
将输入值转换为 UInt32 类型的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串形式。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt32('0xc0fe');。
如果输入值无法在 UInt32 的取值范围内表示,结果会发生上溢或下溢。
这不被视为错误。
例如:SELECT toUInt32(4294967296) == 0;
该函数使用向零舍入方式,即会截断数字的小数部分。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回一个 32 位无符号整数。UInt32
示例
使用示例
toUInt32OrDefault
引入于:v21.11
类似于 toUInt32,此函数将输入值转换为类型为 UInt32 的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果解析成功,则返回类型为 UInt32 的值;否则在传入默认值时返回该默认值,未传入时返回 0。UInt32
示例
成功转换
转换失败
toUInt32OrNull
引入于:v1.1
与 toUInt32 类似,此函数将输入值转换为 UInt32 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 NULL):
- Float* 类型值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt32OrNull('0xc0fe');。
如果输入值无法在 UInt32 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 UInt32 类型的值,如果转换不成功则返回 NULL。UInt32 或 NULL
示例
使用示例
toUInt32OrZero
引入于:v1.1
与 toUInt32 类似,此函数将输入值转换为 UInt32 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt32OrZero('0xc0fe');。
如果输入值无法在 UInt32 的范围内表示,则结果将发生溢出或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回 UInt32 类型的值,若转换失败则返回 0。UInt32
示例
用法示例
toUInt64
引入于:v1.1
将输入值转换为 UInt64 类型的值。
在出错时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的类型:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt64('0xc0fe');。
如果输入值无法在 UInt64 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
例如:SELECT toUInt64(18446744073709551616) == 0;
该函数采用向零舍入方式,即截断数字的小数部分。
另请参阅:
语法
参数
expr— 结果为数字或数字字符串表示形式的表达式。Expression
返回值
返回 64 位无符号整数值。UInt64
示例
用法示例
toUInt64OrDefault
引入于:v21.11
与 toUInt64 类似,此函数将输入值转换为 UInt64 类型的值,但在发生错误时返回默认值。
如果未传入 default 值,则在发生错误时返回 0。
语法
参数
返回值
如果转换成功,返回 UInt64 类型的值;否则,如果传入了默认值则返回该默认值,未传入则返回 0。UInt64
示例
转换成功
转换失败
toUInt64OrNull
引入版本:v1.1
与 toUInt64 类似,此函数将输入值转换为 UInt64 类型的值,但在发生错误时返回 NULL。
支持的参数:
- (U)Int* 的字符串表示形式。
不支持的参数(返回 NULL):
- Float* 值的字符串表示形式,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示形式,例如:
SELECT toUInt64OrNull('0xc0fe');。
如果输入值无法在 UInt64 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示形式。String
返回值
返回 UInt64 类型的值,若转换失败则返回 NULL。UInt64 或 NULL
示例
使用示例
toUInt64OrZero
引入版本:v1.1
类似于 toUInt64,此函数将输入值转换为 UInt64 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int* 整数类型的字符串表示。
不支持的参数(返回 0):
- Float* 浮点类型值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt64OrZero('0xc0fe');。
如果输入值无法在 UInt64 的取值范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回 UInt64 类型的值,如果转换失败则返回 0。UInt64
示例
用法示例
toUInt8
引入于:v1.1
将输入值转换为 UInt8 类型的值。
在发生错误时抛出异常。
支持的参数:
- 类型为 (U)Int* 的值或其字符串表示。
- 类型为 Float* 的值。
不支持的参数:
- Float* 值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt8('0xc0fe');。
如果输入值无法在 UInt8 的取值范围内表示,则结果会发生上溢或下溢。
这不视为错误。
例如:SELECT toUInt8(256) == 0;。
该函数使用向零舍入,即会截断数值的小数部分。
另请参阅:
语法
参数
expr— 返回数字或其字符串表示形式的表达式。Expression
返回值
返回一个 8 位无符号整数值。UInt8
示例
用法示例
toUInt8OrDefault
引入自:v21.11
与 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回默认值。
如果未传入 default 值,则在出错时返回 0。
语法
参数
返回值
如果转换成功,返回类型为 UInt8 的值;否则,如果传入了默认值则返回该默认值,如果未传入则返回 0。UInt8
示例
成功转换
转换失败时
toUInt8OrNull
引入版本:v1.1
与 toUInt8 类似,此函数将输入值转换为 UInt8 类型的值,但在出错时返回 NULL。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 NULL):
- 普通 Float* 类型值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如:
SELECT toUInt8OrNull('0xc0fe');。
如果输入值不能在 UInt8 的范围内表示,则结果会发生上溢或下溢。
这不视为错误。
另请参阅:
语法
参数
x— 数字的 String 类型表示。String
返回值
返回 UInt8 类型的值,如果转换失败则返回 NULL。UInt8 或 NULL
示例
用法示例
toUInt8OrZero
自 v1.1 起提供
与 toUInt8 类似,此函数会将输入值转换为 UInt8 类型的值,但在出错时返回 0。
支持的参数:
- (U)Int8/16/32/128/256 的字符串表示。
不支持的参数(返回 0):
- 常规 Float* 类型值的字符串表示,包括
NaN和Inf。 - 二进制和十六进制值的字符串表示,例如
SELECT toUInt8OrZero('0xc0fe');。
如果输入值无法在 UInt8 的范围内表示,则结果会发生上溢或下溢。
这不被视为错误。
另请参阅:
语法
参数
x— 表示数字的字符串。String
返回值
返回 UInt8 类型的值,如果转换失败则返回 0。UInt8
示例
用法示例
toUUID
自 v1.1 引入
将 String 类型的值转换为 UUID 类型的值。
语法
参数
string— UUID 的字符串表示。String或FixedString
返回值
根据 UUID 的字符串表示返回一个 UUID 值。UUID
示例
用法示例
toUUIDOrZero
自 v20.12 引入
将输入值转换为 UUID 类型的值,但在发生错误时返回全零 UUID。
类似于 toUUID,但在转换出错时返回全零 UUID(00000000-0000-0000-0000-000000000000),而不是抛出异常。
支持的参数:
- 标准格式的 UUID 字符串表示(8-4-4-4-12 个十六进制数字)。
- 不带连字符的 UUID 字符串表示(32 个十六进制数字)。
不支持的参数(返回全零 UUID):
- 无效的字符串格式。
- 非字符串类型。
语法
参数
x— UUID 的字符串形式。String
返回值
如果成功,则返回 UUID 值,否则返回全零 UUID(00000000-0000-0000-0000-000000000000)。UUID
示例
用法示例
toUnixTimestamp64Micro
自 v20.5 引入
将 DateTime64 转换为具有固定微秒精度的 Int64 值。
输入值会根据其自身精度被相应地放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值所在的时区。
语法
参数
value— 任意精度的 DateTime64 值。DateTime64
返回值
返回以微秒为单位的 Unix 时间戳。Int64
示例
使用示例
toUnixTimestamp64Milli
引入版本:v20.5
将 DateTime64 转换为具有固定毫秒精度的 Int64 值。
输入值会根据其精度适当放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
语法
参数
value— 具有任意精度的 DateTime64 值。DateTime64
返回值
返回以毫秒为单位的 Unix 时间戳。Int64
示例
使用示例
toUnixTimestamp64Nano
引入版本:v20.5
将 DateTime64 转换为具有固定纳秒精度的 Int64 值。
输入值会根据其精度被相应地放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值所在的时区。
语法
参数
value— 任意精度的 DateTime64 值。DateTime64
返回值
返回以纳秒为单位的 Unix 时间戳。Int64
示例
用法示例
toUnixTimestamp64Second
引入于:v24.12
将 DateTime64 转换为具有固定秒级精度的 Int64 值。
输入值会根据其自身精度按比例进行相应的放大或缩小。
输出值是相对于 UTC 的,而不是相对于输入值的时区。
语法
参数
value— 任意精度的 DateTime64 值。DateTime64
返回值
返回以秒为单位的 Unix 时间戳。Int64
示例
使用示例