我正在尝试使用JDBC将java.util.Date
从应用程序保存到SQL Server数据库中。
当我使用以下方法将java.util.Date
转换为java.sql.Date
时,它会截断时间部分。
java.sql.Date javaSqlExpiryDate = new java.sql.Date(javaUtilExpiryDate.getTime());
System.out.println("javaUtilExpiryDate: " + javaUtilExpiryDate.toString());
System.out.println("javaSqlExpiryDate: " + javaSqlExpiryDate.toString());
控制台窗口将输出报告为:
javaUtilExpiryDate:2016年9月1日星期四18:19:08
javaSqlExpiryDate:2016-09-01
我又如何保留时间呢?
最佳答案
是的,这是预期的行为并已记录在案。
Quote from the JavaDocs
为了符合SQL DATE的定义,必须通过将与实例相关联的特定时区中的小时,分钟,秒和毫秒设置为零,来“标准化” java.sql.Date实例包装的毫秒值。 。
如果要节省时间,则需要使用java.sql.Timestamp
(尤其是如果数据库中的列定义为datetime
)。