不一致的时间戳与JDBC应用程序结果

时间戳记录与JDBC应用程序不一致当夏令时调整。

写的manjunath.swamy

去年发表在:2022年6月1日

问题

当使用JDBC应用程序与数据砖集群不一致java.sql.Timestamp结果当切换标准时间和夏令时。

导致

默认情况下砖集群使用UTC。

java.sql.Timestamp使用JVM的本地时区。

如果一个砖集群的回报2021-07-12 21:43:08作为一个字符串,JVM解析它2021-07-12 21:43:08并假设当地时区。

这是通常在一年的大多数时间,但是当当地时区DST的调整,它会导致一个问题为UTC不会改变。

例如,3月14日,2021年,美国从夏令时的标准时间。这意味着当地时间从1:59点到下午3点。

如果一个砖集群的回报2021-03-14 02:10:55将其转换为自动,JVM2021-03-14 03:10:55因为02:10:55并不存在于当地时间日期。

解决方案

选项1:配置JVM时区UTC。

设置user.timezone财产格林尼治时间

检查Java时区设置文档的更多信息。

选项2:使用ODBC代替JDBC。ODBC解释UTC时间戳。

您还可以使用turbodbc

选项3:设置本地时区UTC JDBC应用程序中。

审查您的JDBC应用程序的文档了解如何配置本地时区设置。

这篇文章有用吗?