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')
相关推荐
数厘1 天前
2.1SQL 学习:先懂数据库概念再学 SQL
数据库·sql·学习
spencer_tseng1 天前
dameng CREATE USER
sql·dameng
数厘1 天前
2.15 sql基础查询(SELECT、FROM、字段别名、常量与表达式)
数据库·sql·oracle
若阳安好1 天前
【提效小工具】IN SQL、UPDATE SQL、INSERT SQL
java·数据库·sql
lifallen2 天前
Flink Checkpoint 流程、Barrier 流动与 RocksDB 排障
java·大数据·flink
lifallen2 天前
一篇文章讲透 Flink State
大数据·数据库·python·flink
csgo打的菜又爱玩2 天前
3.HAService启动流程解析
flink
Trouvaille ~2 天前
【MySQL篇】复合查询:多表数据的整合
数据库·sql·mysql·面试·复合查询·基础入门·多表连接
cyber_两只龙宝2 天前
【Oracle】Oracle之SQL中的单行函数
linux·运维·数据库·sql·云原生·oracle
大大大大晴天️2 天前
Flink技术实践-FlinkSQL Join技术全解
大数据·flink