当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 164864提问 提问时间:2023-10-22 05:11:37阅读次数: 64

最佳答案 问答题库648位专家为你答疑解惑

文章目录

  • 一、数据需求:
  • 二、探索路程
    • 1、UNIX_TIMESTAMP + CONVERT_TZ
    • 2、UNIX_TIMESTAMP
  • 三、解决方案
    • TIMESTAMPADD + TO_TIMESTAMP

一、数据需求:

将时间字符串格式化,转变成时间戳,再加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)

eg:TIMESTAMPADD(HOUR, 8, 1696932862000)

(2)TO_TIMESTAMP
作用:将时间字符串转换成时间戳
用法:TO_TIMESTAMP(string1[, string2])

eg:TO_TIMESTAMP('1970-01-01 08:00:01.001')
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Flink SQL 时区 -- 时间字符串转时间戳并转换时区":http://eshow365.cn/6-21332-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!