當我嘗試使用java.sql.Timestamp值插入到在MySQL 5.6 DATETIME列時,我總是得到這樣的錯誤:java.sql.Timestamp中的錯誤插入DATETIME
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'invoice_date' at row 1
原此項目的開發人員具有創建Prepared語句的自定義JAR,以便將java.util.Date轉換爲Timestamp以插入到DATETIME中,反之亦然,以及處理的數據庫連接。請注意,這是我的假設,因爲沒有關於它的文檔。嘗試使用時間戳通過的PreparedStatement插入到DATETIME我有同樣的結果,使用類似:
ps.setTimestamp(3, new Timestamp(date.getTime()));
我要創建我自己的連接,這樣我可以使用java.sql.Date來解決這個問題。但是,它會將結果的時間值歸零。我用
ps.setDate(3, new java.sql.Date(date.getTime()));
我也得到類似
2013-06-27 00:00:00
在表中,因爲我們知道java.sql.Date不存儲的時間。
令人驚訝的是,在使用MySQL 5.0的服務器上,此功能正常工作。我假設Timestamp中的毫秒值導致問題轉換爲DATETIME?由於原作品在舊版本中。有沒有什麼辦法可以解決這個問題,而無需重新安裝5.0的所有內容?
使用Java.util.Date –
我無法在PreparedStatement中使用java.util.Date。它必須首先變成java.sql.Date。 –