类型转换函数

最近更新时间:2019-10-23 17:37:45

类型转换函数的函数名和功能描述如下:

函数名 功能描述
CAST(value AS type) 将某个值转为 type 类型,例如 CAST(`hello` AS VARCHAR) 会将 `hello` 字段转为 VARCHAR 类型。
CAN_CAST_TO(str, type) 判断 str 字符串是否可以被转换为 type 指定的类型,返回值为布尔型。例如 CAN_CAST_TO('123456', 'INTEGER') 则返回 True,而 CAN_CAST_TO('a145', 'DOUBLE') 则返回 False。返回值可以在 CASE 语句中作为条件使用。
TO_TIMESTAMP(string, simple_format) 以 Java 的 SimpleDateFormat 支持的时间格式化模板 simple_format 将 string 字符串格式化为流计算 Oceanus 内部支持的 timestamp 类型的时间戳。例如 TO_TIMESTAMP(ts, ‘yyyy-MM-dd HH:mm:ss’)。
DATE_FORMAT_SIMPLE(timestamp, simple_format) 将 timestamp 类型的字段以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式。例如 DATE_FORMAT_SIMPLE(ts, ‘yyyy-MM-dd HH:mm:ss’)。
DATE_FORMAT(timestamp, format) 使用与 MySQL 兼容的模板 format 来格式化时间戳为字符串(与 DATE_FORMAT_SIMPLE 的区别在于采用 MySQL 的格式化语法而非 Java SimpleDateFormat 的格式化语法)。使用方式与 MySQL 的 date_parse() 函数相同。例如 DATE_FORMAT(ts, ‘%Y, %d %M’) 返回字符串 ‘2017, 05 May’。
TIMESTAMP_TO_LONG(timestamp) 或 TIMESTAMP_TO_LONG(timestamp, mode) 将某个 Timestamp 类型的参数转为 BIGINT (Long) 类型的值。mode 若为 'SECOND',则转为以秒来计数的 Unix 时间戳,例如1548403425;如果 mode 为其他值或者省略,则转为以毫秒计数的 Unix 时间戳,例如1548403425512。
注意:

如果使用 CAST() 函数,将时间段 INTERVAL 转为数字,则结果会是字面值(可能不符合预期)。例如 CAST(INTERVAL '1234' MINUTE AS BIGINT),则结果会是字面值1234,而非时间段表示的毫秒值。