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')
相关推荐
CPU NULL7 小时前
新版IDEA创建数据库表
java·数据库·spring boot·sql·学习·mysql·intellij-idea
Zda天天爱打卡11 小时前
【趣学SQL】第四章:高级 SQL 功能 4.1 触发器与存储过程——数据库的“自动机器人“和“万能工具箱“
数据库·sql·oracle
老苏畅谈运维1 天前
MySQL性能分析的“秘密武器”,深度剖析SQL问题
数据库·sql·mysql
张小小大智慧1 天前
Apache Flink 概述学习笔记
笔记·学习·flink
徐一闪_BigData1 天前
FlinkSql使用中rank/dense_rank函数报错空指针
大数据·sql·flink
Leven1995271 天前
Flink (十二) :Table API & SQL (一) 概览
大数据·sql·flink
一條狗1 天前
20250124 Flink中 窗口开始时间和結束時間
大数据·flink
monstercl2 天前
Ubuntu20彻底删除MySQL8
sql·mysql·ubuntu·c/c++
羊小猪~~2 天前
MYSQL学习笔记(五):单行函数(字符串、数学、日期时间、条件判断、信息、加密、进制转换函数)讲解
数据库·笔记·后端·sql·学习·mysql·考研
羊小猪~~2 天前
MYSQL学习笔记(六):聚合函数、sql语句执行原理简要分析
java·数据库·c++·后端·sql·mysql·考研