函数
注意
如果使用 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 |