Flink SQL 时区 -- 时间字符串转时间戳并转换时区

文章目录

一、数据需求:

将时间字符串格式化,转变成时间戳,再加8小时后写入clickhouse

bash 复制代码
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)

sql 复制代码
eg:
	UNIX_TIMESTAMP('1970-01-01 08:00:01', 'yyyy-MM-dd HH:mm:ss.SSS')

(2)CONVERT_TZ

作用:转换时区

用法:CONVERT_TZ(string1, string2, string3)

sql 复制代码
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');

三、解决方案

sql 复制代码
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)

sql 复制代码
eg:
	TIMESTAMPADD(HOUR, 8, 1696932862000)

(2)TO_TIMESTAMP

作用:将时间字符串转换成时间戳

用法:TO_TIMESTAMP(string1[, string2])

sql 复制代码
eg:
	TO_TIMESTAMP('1970-01-01 08:00:01.001')
相关推荐
bbsh20991 小时前
WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
数据库·sql·mysql·webfuture
刘 大 望10 小时前
数据库-联合查询(内连接外连接),子查询,合并查询
java·数据库·sql·mysql
渣渣盟12 小时前
基于Scala实现Flink的三种基本时间窗口操作
开发语言·flink·scala
网安INF12 小时前
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
java·web安全·网络安全·flink·漏洞
一叶知秋哈12 小时前
Java应用Flink CDC监听MySQL数据变动内容输出到控制台
java·mysql·flink
cookqq13 小时前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
斯特凡今天也很帅14 小时前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
代码匠心18 小时前
从零开始学Flink:揭开实时计算的神秘面纱
java·大数据·后端·flink
海尔辛19 小时前
SQL 基础入门
数据库·sql
噼里啪啦啦.1 天前
Spring事务和事务传播机制
数据库·sql·spring