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')
相关推荐
TE-茶叶蛋5 小时前
DBeaver 的Explain 执行计划,分析sql的性能
数据库·sql
麦聪聊数据6 小时前
数据 API 平台选型:深度解读数据服务的四大关键技术与架构底座
数据库·sql
拾起零碎10 小时前
U8/材料出库单触发器,有条件的修改出库类别
sql
敲代码的嘎仔11 小时前
力扣高频SQL基础50题详解
开发语言·数据库·笔记·sql·算法·leetcode·后端开发
TE-茶叶蛋12 小时前
sql优化思维
数据库·sql
打小就很皮...13 小时前
基于 Python + LangChain + SQL 生成自动查询数据实战
数据库·sql·langchain
这个DBA有点耶14 小时前
某银行核心系统从Oracle迁移到国产数据库全程复盘(DBA视角)
数据库·经验分享·sql·oracle·dba·智能硬件
静小谢16 小时前
sql笔记
spring boot·笔记·sql·mybatis
sleepcattt17 小时前
Spring-全面详解(学习总结)
数据库·sql·spring·spring事务·spring详解
木子墨51618 小时前
工程算法实战 | 数据库ORDER BY的底层:内存排序 → 外部归并 → 索引优化
数据结构·数据库·python·sql·算法·动态规划