开发者社区> 问答> 正文

关于 SQL DATE_FORMAT 的时区设置的构想

近期发现 Flink 的 Blink Planner 在 DATE_FORMAT 对 CURRENT_TIMESTAMP 

做时间格式化为字符串时,默认以 UTC+0 为准。 

长期以来,TableConfig 类里面有一个 setLocalTimeZone 方法;将其设置为东八区以后,发现格式化后的字符串仍然是 UTC+0 

的。而深入来看,Flink 的时间格式化时的代码生成逻辑(time.scala)并未考虑时区的设置。 

由于大多数用户的时区均不是 UTC+0(GMT、UTC),如果时间格式化、显示等都可以考虑到 TableConfig 中的时区设置,那么 Flink 

是否会更用户友好一些呢?当然这个会涉及到不兼容的变更,需要谨慎一些。 

也许提供一个 DATE_FORMAT_WITH_TIMEZONE 的内置函数,社区是否会更容易接受一些呢? 

仅仅是个人一点想法,感谢 :)*来自志愿者整理的flink邮件归档

展开
收起
玛丽莲梦嘉 2021-12-02 16:43:00 1355 0
1 条回答
写回答
取消 提交回答
  • CURRENT_TIMESTAMP 返回值类型是 TIMESTAMP (WITHOUT TIME ZONE), 

    其语义可参考 java.time.LocalDateTime。 

    其字符形式的表示并不随着时区变化而变化(如你所见,和UTC+0 一致)。 

    你的需求可以通过 CONVERT_TZ(timestamp_string, time_zone_from_string, 

    time_zone_to_string)*来自志愿者整理的FLINK邮件归档

    2021-12-02 17:38:38
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载