DATE類型數據在MySql中減一天的問題


最近在開發一個教務管理系統,數據庫中有教師表(Teacher)、學生表(Student)等,其中屬性:出生日期(Birthday)為DATE類型。

在執行更新教師操作時,發現未改動教師的出生日期但更新后的日期卻減少了一天,最初以為是自己傳值地方寫錯了,但是經過追蹤發現傳值時日期一切正常,但是更新后日期卻又減少一天。

最后發現是因為最新的數據庫驅動中時區設置的原因。這種情況在DATE類型數據插入、更新時均會發生。

最新的MySql數據庫連接驅動為

jdbc.driver=com.mysql.cj.jdbc.Driver

其中URL配置為

jdbc.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC

一般默認serverTimezone配置為UTC,但是這樣的日期與系統日期有八個小時的時差

那么如何解決這樣的問題呢?

只需要將serverTimezone設置為Asia/Shanghai或者HongKong,問題就解決了。

jdbc.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai

舊版本的MySql數據庫驅動無需配置時區等

jdbc.driver=com.mysql.jdbc.Driver

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM