問題
當使用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應用程序的文檔了解如何配置本地時區設置。