1. 数值/日期类转换

1.1 常规类型转换

1.2 -OrZero系列

 1.3 -OrNull系列

2. 字符串转换

3. 通用的转换函数CAST(x, t)

4. 时间相关转换

1. 数值/日期类转换

1.1 常规类型转换

大类 细类 描述
toInt(8|16|32|64) toInt8(expr) 转换为有符号的整数,转换向零舍入(截断数字的小数位)。nan和inf未定义。
toInt16(expr)
toInt32(expr)
toInt64(expr)
toUInt(8|16|32|64) toUInt8(expr) 转换为无符号的整数,转换向零舍入(截断数字的小数位)。nan和inf未定义。
如果传入参数为负数,转换将异常。
toUInt16(expr)
toUInt32(expr)
toUInt64(expr)

toFloat(32|64)

toFloat32(expr) 转换为浮点数。
toFloat64(expr)
toDecimal(32|64|128) toDecimal32(value, S) 将值转换为精度为S的Decimal数据类型。该值可以是数字或字符串。 S(比例)参数指定小数位数。
toDecimal64(value, S)
toDecimal128(value, S)
toDate toDate(expr) 标准的时间格式字符串。
toDateTime toDateTime(expr) 标准的时间格式字符串或Unix时间戳。

1.2  -OrZero系列

与常规的数据类型转换相比, -OrZero可以处理异常情况, 当转换失败时,则返回0。

注意:这里只能接收字符串的参数。
 

大类 细类 描述
toInt(8|16|32|64)OrZero toInt8OrZero(expr)
toInt16OrZero(expr)
toInt32OrZero(expr)
toInt64OrZero(expr)
toUInt(8|16|32|64)OrZero toUInt8OrZero(expr)
toUInt16OrZero(expr)
toUInt32OrZero(expr)
toUInt64OrZero(expr)

toFloat(32|64)OrZero

toFloat32OrZero(expr)
toFloat64OrZero(expr)
toDecimal(32|64|128)OrZero toDecimal32OrZero(value, S) 如下两种情况会导致转换异常:
1. 当不能将字符串转换为数字。
2. 能将字符串转换为数字, 但是精度超过S。
toDecimal64OrZero(value, S)
toDecimal128OrZero(value, S)
toDateOrZero toDateOrZero(expr) 日期转换异常不会返回0, 而是返回混乱的日期。
toDateTimeOrZero toDateTimeOrZero(expr)

1.3  -OrNull系列

与常规的数据类型转换相比, -OrNull可以处理异常情况, 当转换失败时,则返回Nulll。

注意:这里只能接收字符串的参数。

大类 细类 描述
toInt(8|16|32|64)OrNull toInt8OrNull(expr)
toInt16OrNull(expr)
toInt32OrNull(expr)
toInt64OrNull(expr)
toUInt(8|16|32|64)OrNull toUInt8OrNull(expr)
toUInt16OrNull(expr)
toUInt32OrNull(expr)
toUInt64OrNull(expr)

toFloat(32|64)OrNull

toFloat32OrNull(expr)
toFloat64OrNull(expr)
toDecimal(32|64|128)OrNull toDecimal32OrNull(value, S) 如下两种情况会导致转换异常:
1. 当不能将字符串转换为数字。
2. 能将字符串转换为数字, 但是精度超过S。
toDecimal64OrNull(value, S)
toDecimal128OrNull(value, S)
toDateOrNull toDateOrNull(expr) 日期转换异常不会返回0, 而是返回混乱的日期。
toDateTimeOrNull toDateTimeOrNull(expr)

2. 字符串转换

函数 描述
toString

将数字、字符串(非固定长度字符串)、date和datetime数据类型转换为字符串。

当将日期转换为字符串时,可额外增加第二个参数,用于指定时区。

toFixedString(s, N) 将String类型的参数转换为FixedString(N)类型(固定长度为N的字符串),N必须为常数。如果字符串的字节数少于N,则在字符串右侧填充空字符串。如果字符串字节数大于N,则会转换异常。
toStringCutToZero(s) 接受String或Fixed参数,在字符串参数的第一个0字节处被截断,返回截断后的字符串。

3. 通用的转换函数CAST(x, t)

将"x"转换为"t"数据类型。 也可以写成: CAST(x as t) 。

可以将类型转换为Nullable 。

4. 时间相关转换

4.1 toInterval(Year|Quarter|Month|Week|Day|Hour|Minute|Second)

将数字类型转换为Interval数据类型。

1

toIntervalSecond(number)

2

toIntervalMinute(number)

3

toIntervalHour(number)

4

toIntervalDay(number)

5

toIntervalWeek(number)

6

toIntervalMonth(number)

7

toIntervalQuarter(number)

8

toIntervalYear(number)

4.2 日期解析

将数字类型参数解析为Date或DateTime类型。 与toDate和toDateTime不同,parseDateTimeBestEffort可以处理更复杂的日期格式。 

函数 描述
parseDateTimeBestEffort parseDateTimeBestEffort(cc.start_timestamp,
    'America/Los_Angeles')
parseDateTimeBestEffortOrNull 对于无法处理的格式,则返回Null。
parseDateTimeBestEffortOrZero 对于无法处理的格式,则返回0。

select '20180831145618' as time, parseDateTimeBestEffort(time);

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐