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);