类型转换函数

最近更新时间:2023-06-21 15:21:57

我的收藏

函数

注意
如果使用 CAST() 函数,将时间段 INTERVAL 转为数字,则结果会是字面值(可能不符合预期)。例如 CAST(INTERVAL '1234' MINUTE AS BIGINT),则结果会是字面值1234,而非时间段表示的毫秒值。
函数名
功能描述
CAST(value AS type)
将某个值转为 type 类型,例如 CAST(hello AS VARCHAR) 会将 hello 字段转为 VARCHAR 类型。
CAN_CAST_TO(str, type)
判断 str 字符串是否可以被转换为 type 指定的类型,返回值为布尔型。返回值可以在 CASE 语句中作为条件使用。例如 CAN_CAST_TO('123456', 'INTEGER') 则返回 True,而 CAN_CAST_TO('a145', 'DOUBLE') 则返回 False。
TO_TIMESTAMP(string, simple_format)
以 Java 的 SimpleDateFormat 支持的时间格式化模板 simple_format,将 string 字符串格式化为 Timestamp 类型的时间戳。默认以东八区为准。 例如 TO_TIMESTAMP(ts, 'yyyy-MM-dd HH:mm:ss')
DATE_FORMAT_SIMPLE(timestamp, simple_format)
BIGINT(Long)类型的字段(毫秒为单位的 Unix 时间戳)以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式。例如 DATE_FORMAT_SIMPLE(unix_ts, 'yyyy-MM-dd HH:mm:ss') 会返回 "2020-01-01 12:13:14" 这样格式的字符串。
DATE_FORMAT(timestamp, format)
Timestamp 类型的字段以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式。例如 DATE_FORMAT(ts, 'yyyy-MM-dd HH:mm:ss') 会返回 "2020-01-01 12:13:14"。
TIMESTAMP_TO_LONG(timestamp) 或 TIMESTAMP_TO_LONG(timestamp, mode)
将某个 TIMESTAMP 类型的参数转为 BIGINT (Long) 类型的值。若 mode 为 'SECOND',则转为以秒来计数的 Unix 时间戳,例如1548403425。若 mode 为其他值或者省略,则转为以毫秒计数的 Unix 时间戳,例如1548403425512。

示例

CAST

功能描述:将某个值转为 type 类型。 语法:CAST(value AS type) 示例测试语句:SELECT CAST(var1 AS VARCHAR) FROM TEST; 测试数据和结果:
测试数据(INT var1)
测试结果 VARCHAR
58
'58'

CAN_CAST_TO

功能描述:判断 str 字符串是否可以被转换为 type 指定的类型,返回值为布尔型。返回值可以在 CASE 语句中作为条件使用。 语法:CAN_CAST_TO(str, type) 示例测试语句:SELECT CAN_CAST_TO(var1,type) FROM Test; 测试数据和结果:True
测试数据(VARCHAR var1)
测试数据(VARCHAR type)
测试结果(BOOLEAN)
123456
INTEGER
true

DATE_FORMAT_SIMPLE

功能描述:BIGINT(Long)类型的字段(必须是以毫秒为单位的 Unix 时间戳)以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式(输出时区为:GMT+8)。 语法:DATE_FORMAT_SIMPLE(timestamp, simple_format) 示例测试语句:SELECT DATE_FORMAT_SIMPLE(unix_ts,'yyyy-MM-dd HH:mm:ss') FROM Test; 测试数据和结果:
测试数据(unix_ts)
测试结果 VARCHAR
1627997937000
2021-08-03 21:38:57

DATE_FORMAT

功能描述:Timestamp 类型的字段以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式。 语法:DATE_FORMAT(timestamp, format) 示例测试语句:SELECT DATE_FORMAT(timestamp,format) FROM Test; 测试数据和结果:
测试数据(timestamp)
测试数据(format)
测试结果 VARCHAR
2021-01-01 12:13:14
yyMMdd
210101
2021-01-01 12:13:14
yyyyMMdd
20210101