目录
1、toInt(8|16|32|64)
说明:转换一个输入值为Int类型。
这个函数包括:
toInt8(expr) — 结果为Int8数据类型。
toInt16(expr) — 结果为Int16数据类型。
toInt32(expr) — 结果为Int32数据类型。
toInt64(expr) — 结果为Int64数据类型。
参数 :expr — 表达式返回一个数字或者代表数值类型的字符串。
不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。
返回值:整形在Int8, Int16, Int32,或者 Int64 的数据类型。
函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。
注:NaN and Inf转换是不确定的。
例子:
select toInt64(nan), toInt64(Inf),toInt32(32), toInt16('16'), toInt8(8.8);
扩展:
☛ toInt(8|16|32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回0。
☛ toInt(8|16|32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL。
2、toFloat(|32|64)
说明:转换一个输入值为Float类型。
这个函数包括:
toFloat32(expr) — 结果为Float32数据类型。
toFloat64(expr) — 结果为Float64数据类型。
例子:
select toFloat32('89.12'),toFloat64('98.0912');
扩展:
☛ toFloat(32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Float (32 | 64),如果转换失败直接返回0。
☛ toFloat(32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Float ( 32 | 64),如果转换失败直接返回NULL。
3、toDecimal(32|64|128)
说明:转换 value 到Decimal类型的值,其中精度为S。value可以是一个数字或者一个字符串。S 指定小数位的精度。
这个函数包括:
toDecimal32(value, S)
toDecimal64(value, S)
toDecimal128(value, S)
例子:
select toDecimal32('89.12',2),toDecimal64('98.0912',5),toDecimal128('98.0912',6);
扩展:
☛ toDecimal(32|64|128)OrNull:转换一个输入的字符到 Nullable(Decimal(P,S))类型的数据。
如果在解析输入值发生错误的时候你希望得到一个NULL值而不是抛出异常,可以使用该函数。
☛ toDecimal(32|64|128)OrZero:转换输入值为Decimal(P,S)类型数据。
当解析错误的时候,你不需要抛出异常而希望得到0值,可以使用该函数。
4、toString
说明:函数用于在数字、字符串(不包含FixedString)、Date以及DateTime之间互相转换。
select now(),toString(today()),toString(now());
5、parseDateTimeBestEffort
说明:把String类型的时间日期转换为DateTime数据类型。
语法: parseDateTimeBestEffort(time_string [, time_zone]);
参数 :
time_string — 字符类型的时间和日期。
time_zone — 字符类型的时区。
非标准格式的支持
☛ 9位或者10位的数字时间,unix timestamp.
☛ 时间和日期组成的字符串: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss等。
☛ 日期的字符串: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 等。
☛ 只有天和时间: DD, DD hh, DD hh:mm。这种情况下 YYYY-MM 默认为 2000-01。
☛ 包含时间日期以及时区信息: YYYY-MM-DD hh:mm:ss ±h:mm等。例如: 2021-12-12 17:36:00 -5:00。
返回值:DateTime类型数据。
例子:
select
parseDateTimeBestEffort('12 20:19') as data_0
,parseDateTimeBestEffort('8912211011') as data_1
,parseDateTimeBestEffort('12/13/2021 12:12:21') as data_2
,parseDateTimeBestEffort('20211212 11:12:12') as data_3
,parseDateTimeBestEffort('Sat, 12 Aug 2021 11:22:22 GMT', 'Europe/Moscow') as data_4
扩展:
☛ parseDateTimeBestEffortOrNull 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为NULL。
☛ parseDateTimeBestEffortOrZero 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为0。
6、CAST(x, T)
说明:将’x’转换为’t’数据类型。还支持语法CAST(x as t)
例子:
select
'2021-12-21 21:12:13' as timestamp
,CAST(timestamp as DateTime) as datetime
,CAST(timestamp as Date) as date
,CAST(timestamp, 'String') as string
,CAST(timestamp, 'FixedString(22)') as fixed_string;
注:将参数转换为FixedString(N),仅适用于String或FixedString(N)类型的参数。
参考:https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/