MYSQL日期年份以其他格式保存

时间:2017-03-03 13:32:50

标签: java mysql

我在java中使用mysql。我需要在数据库中插入日期,但它在oracle中非常容易,但在Mysql中我面临着一些奇怪的问题。我正在使用java.sql.Date,当我尝试插入1990-08-21时,它以3912-01-21的形式保存。我不明白我错过了什么。

    users.setDateOfBirth(new Date(1990-08-21));

2 个答案:

答案 0 :(得分:0)

如果使用java.util.Date而不是java.sql.Date会更好。但是,java.util.date会返回日期和时间,您可以将其更改为您想要的格式,如上所述https://stackoverflow.com/a/42580378/7498469

答案 1 :(得分:-1)

表达式users.setDateOfBirth(new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-21")); 被视为1990 - 8 - 21 = 1961。

日期的构造函数需要一个长整数(自标准基准时间以来称为"纪元",即1970年1月1日,格林威治标准时间00:00:00)的毫秒数。所以,它转换到那个日期(3912-01-21)

您需要使用不同的表达式将字符串日期转换为Java日期:

java.sql.date

users.setDateOfBirth(new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-21")));

users.setDateOfBirth(java.sql.Date.valueOf("1990-08-21"));

您也可以使用快速转换(仅适用于yyyy-mm-dd):

var dict: [String: Int] = ["one": 1, "two": 2, "three": 3]