一、数据需求:
将时间字符串格式化,转变成时间戳,再加8小时后写入clickhouse
2023-10-17T03:00:42.506205807 ----> 2023-10-17 11:00:42.506
二、探索路程
1、UNIX_TIMESTAMP + CONVERT_TZ
(该方法默认精确度为秒,不适用毫秒)
(1)UNIX_TIMESTAMP
作用:将时间字符串转换成时间戳
用法:UNIX_TIMESTAMP(STRING datestr, STRING format)
eg:
UNIX_TIMESTAMP('1970-01-01 08:00:01', 'yyyy-MM-dd HH:mm:ss.SSS')
(2)CONVERT_TZ
作用:转换时区
用法:CONVERT_TZ(string1, string2, string3)
eg:
CONVERT_TZ('1970-01-01 08:00:01', 'UTC', 'Asia/Shanghai')
2、UNIX_TIMESTAMP
(实测仅获取当前10位时间戳)
作用:将时间字符串转换成时间戳,并转换时区
用法:UNIX_TIMESTAMP(‘1970-01-01 08:00:01.001 +0800’, ‘yyyy-MM-dd HH:mm:ss.SSS X’);
三、解决方案
TIMESTAMPADD(HOUR, 8, TO_TIMESTAMP(replace(substring('2023-10-17T03:00:42.506205807',0,23),'T',' ')));
TIMESTAMPADD + TO_TIMESTAMP
(1)TIMESTAMPADD
作用:给时间戳加上任意时间
用法:TIMESTAMPADD(timeintervalunit, interval, timepoint)文章来源:https://www.toymoban.com/news/detail-765699.html
eg:
TIMESTAMPADD(HOUR, 8, 1696932862000)
(2)TO_TIMESTAMP
作用:将时间字符串转换成时间戳
用法:TO_TIMESTAMP(string1[, string2])文章来源地址https://www.toymoban.com/news/detail-765699.html
eg:
TO_TIMESTAMP('1970-01-01 08:00:01.001')
到了这里,关于Flink SQL 时区 -- 时间字符串转时间戳并转换时区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!