我正在使用mysql與java。我需要在數據庫中插入日期,但是它在oracle中很容易,但在Mysql中,我面臨着有點奇怪的問題。我正在使用java.sql.Date,當我試圖插入1990-08-21時,它以3912-01-21的形式保存。我不明白我錯過了什麼。MYSQL日期年份保存爲其他格式
users.setDateOfBirth(new Date(1990-08-21));
我正在使用mysql與java。我需要在數據庫中插入日期,但是它在oracle中很容易,但在Mysql中,我面臨着有點奇怪的問題。我正在使用java.sql.Date,當我試圖插入1990-08-21時,它以3912-01-21的形式保存。我不明白我錯過了什麼。MYSQL日期年份保存爲其他格式
users.setDateOfBirth(new Date(1990-08-21));
如果使用java.util.Date而不是java.sql.Date,會更好。然而java.util.date返回日期和時間可以改變成你想要如上述https://stackoverflow.com/a/42580378/7498469
表達1990-08-21
被視爲1990的格式 - 8 - 21 = 1961
構造爲日期需要一個長整數(標準基準時間之後的毫秒數,稱爲「時代」,即1970年1月1日,格林威治標準時間00:00:00)。因此,其轉換爲日期(3912-01-21)
您需要使用不同的表達爲一個字符串日期轉換爲java日期:
users.setDateOfBirth(new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-21"));
對於java.sql.date
:
users.setDateOfBirth(new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-21")));
您還可以使用快速轉換(僅適用於YYYY-MM-DD):
users.setDateOfBirth(java.sql.Date.valueOf("1990-08-21"));
這將返回java.util.Date –
閱讀文檔:https://開頭的文檔。 oracle.com/javase/7/docs/api/java/sql/Date.html您保存的是1990-8-21 = 1961的結果 – Jens
您是不是要寫逗號而不是連字符?編輯:哦,nvm構造函數已被棄用 – SWdV
也不管它與Oracle/MySQL有關。 – Kayaman