當(dāng)使用Java在操作MySQL時猴抹,如果你的MySQL表中存在datetime類型的字段,相信你有可能會遇到這種情況互艾,0值的datetime字段社露,顯示在MySQL里顯示為“0000-00-00 00:00:00”,恰恰是這個值店读,當(dāng)賦值給實體類對應(yīng)的屬性Timestamp類型時嗦枢,會提示錯誤“Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP”。一般這種情況我們更希望數(shù)據(jù)庫驅(qū)動能幫我們這個特殊的家伙自動地轉(zhuǎn)為null屯断。
辦法是有的文虏,在我們配置數(shù)據(jù)庫連接時的配置屬性中,有一項“url”殖演,通常情況下氧秘,寫為jdbc:mysql://127.0.0.1:3306/test
,為了解決上述的問題趴久,在這個字符串后面追加一個配置“zeroDateTimeBehavior”丸相,最終寫為jdbc:mysql://127.0.0.1:3306/test?zeroDateTimeBehavior=convertToNull
即可彼棍。
zeroDateTimeBehavior有三個值灭忠,分別代表不同的處理策略,如下所示座硕。
exception
:拋出異常弛作,這個是默認(rèn)值。
convertToNull
:將日期轉(zhuǎn)換成NULL值华匾。
round
:替換成最近的日期即0001-01-01映琳。
當(dāng)然,還有更直接可觀的做法蜘拉,當(dāng)我們使用Timestamp屬性存入數(shù)據(jù)庫之前萨西,最好可以檢查并避免0值的插入,自然而然也就不會出現(xiàn)上述的轉(zhuǎn)換異常問題了旭旭。