不一致的時間戳與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應用程序的文檔了解如何配置本地時區設置。