问题
当使用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应用程序的文档了解如何配置本地时区设置。