我在java中使用mysql。我需要在数据库中插入日期,但它在oracle中非常容易,但在Mysql中我面临着一些奇怪的问题。我正在使用java.sql.Date,当我尝试插入1990-08-21时,它以3912-01-21的形式保存。我不明白我错过了什么。
users.setDateOfBirth(new Date(1990-08-21));
答案 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]