将java.util.Date转换为java.sql.Date会截断时间部分

Wat*_* v2 1 java sql-server date

我试图java.util.Date使用JDBC将应用程序保存到我的SQL Server数据库.

当我使用下面的方法将其转换java.util.Date为a时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());
Run Code Online (Sandbox Code Playgroud)

控制台窗口报告的输出:

javaUtilExpiryDate:Thu Sep 01 18:19:08 IST 2016

javaSqlExpiryDate:2016-09-01

如何保留时间部分呢?

a_h*_*ame 6

是的,这是预期的和记录在案的行为.

引自JavaDocs

为了符合SQL DATE的定义,java.sql.Date实例包含的毫秒值必须通过在与实例关联的特定时区中将小时,分钟,秒和毫秒设置为零来"标准化". .

如果要保留时间,则需要使用java.sql.Timestamp(特别是如果数据库中的列定义为datetime).