当我将 SQL DateTime
插入数据库时,我得到 2007-02-07 12:00:00.00
但我制作了这样的 Date
对象:2007-02-07 17:29:46.00
如何获取数据库中秒的值。它总是将它改回 12:00:00.00
date.setYear(Integer.valueOf(parsedDate[2].replaceAll(" ", "")) - 1900);
date.setMonth(Integer.valueOf(parsedDate[0].replaceAll(" ", "")));
date.setDate(Integer.valueOf(parsedDate[1].replaceAll(" ", "")));
...
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
我应该使用任何格式化程序吗?
最佳答案
java.sql.Date
表示日期,而不是日期和时间。来自 the docs :
To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.
如果你想存储日期和时间,你应该寻找另一种类型——例如java.sql.Timestamp
.编辑:这并不是建议您使用 TIMESTAMP 列类型 - 正如 paulsm4 在评论中所说,那是另一回事。然而,据我所知,JDBC 只支持:
日期
(不,你也想要时间)时间
(不,你也想要约会)Timestamp
(包括日期和时间,但您不需要 TIMESTAMP SQL 语义)
我期望使用带有 DATETIME 列的 Java Timestamp
类型来工作,尽管没有 Timestamp
提供的精度级别。
编辑:经过更多研究后,看起来您可能想要使用 java.sql.Time
类型,但使用特殊的驱动程序参数 - 至少如果您使用的是 Microsoft 驱动程序。在 configuring JDBC 上查看这些文档获取更多信息。
关于java sql 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530545/