# 转换函数
转换函数采用各种方式对数据进行转换,例如转换类型,使用 base64 编码和压缩。
# CAST
cast(col, "bigint")
将值从一种数据类型转换为另一种数据类型。支持的类型包括:bigint,float,string,boolean,bytea 和 datetime。
# 转换为 datetime 类型
使用 cast 函数转换到 datetime 类型时,转换规则如下:
- 如果参数为 datetime 类型,则直接返回原值。
- 如果参数为 bigint 或者 float 类型,则其数值会作为自 1970年1月1日0时起至今的毫秒值而转换为 datetime 类型。
- 如果参数为 string 类型,则会尝试自动识别格式并将其转换为 datetime 类型。
- 支持的时间格式可以参考
github.com/jinzhu/now
的 TimeFormats (opens new window)
- 支持的时间格式可以参考
- 其他类型的参数均不支持转换。
# CONVERT_TZ
convert_tz(col, "Asia/Shanghai")
将时间数值转换成对应时区的时间。时区参数格式参照 IANA 时区数据库 (opens new window),默认值为 UTC
,设置为 Local
则使用系统时区。
注意:在基于 alpine 的环境里使用该函数,需要确保已经正确安装(
apk add tzdata
)了时区数据。
# TO_SECONDS
to_seconds(col)
to_seconds
首先将 col 转换为日期时间并将其作为 Unix 时间返回,即自 1970 年 1 月 1 日 UTC 以来经过的秒数。
# CHR
chr(col)
返回与给定 Int 参数对应的 ASCII 字符
# ENCODE
encode(col, "base64")
根据编码方案将数据编码为其字符串表示形式。目前,只支持 "base64" 编码类型。
# DECODE
decode(col, "base64")
解码输入字符串。目前,只支持 "base64" 类型。
# TRUNC
trunc(dec, int)
将第一个参数截断为第二个参数指定的小数位数。 如果第二个参数小于零,则将其设置为零。 如果第二个参数大于34,则将其设置为34。从结果中去除尾随零。
# COMPRESS
compress(input, "zlib")
压缩输入的字符串或二进制值。目前支持 'zlib', 'gzip', 'flate' 和 'zstd' 压缩算法。
# DECOMPRESS
decompress(input, "zlib")
解压缩输入的字符串或二进制值。目前支持 'zlib', 'gzip', 'flate' 和 'zstd' 压缩算法。
# HEX2DEC
hex2dec(col)
返回给定16进制字符串的10进制数值, 参数的数据类型需要是 string, 如果参数是 "0x10"
或 "10"
,则将其转换为 16
。
# DEC2HEX
dec2hex(col)
返回给定 Int 类型10进制的16进制字符串,如果参数为 16
,则将其转换为 "0x10"
。