字符串到日期Java

ola*_*ola 0 java sql time datetime jdbc

我试图将字符串"5/23/14 02:23:24"从Eclipse中的String转换为要插入到SQL语句中的Date.我的代码如下:

String dateAndTime = "5/23/14 02:23:24";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
Date date = sdf.parse(dateAndTime);
long dateLong = date.getTime();
insertStatement.setDate(1, new java.sql.Date(dateLong));
Run Code Online (Sandbox Code Playgroud)

我希望看到

23-MAY-2014 2.23.24.000000000 PM
Run Code Online (Sandbox Code Playgroud)

在我的桌子上,但我看到了

23-MAY-2014 12.00.00.000000000 AM
Run Code Online (Sandbox Code Playgroud)

谁能说清楚我做错了什么?

谢谢!

rge*_*man 7

标准DATESQL类型没有与之关联的任何时间信息,因此状态的javadocjava.sql.Date:

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

你会想要用一个java.sql.Timestamp代替.它对应于SQL类型TIMESTAMP,它包含日期和时间数据.


Jon*_*eet 6

你正在打电话setDate,它使用的是java.sql.Date.这只代表一个日期,而不是日期和时间.

你应该考虑使用,setTimestamp而不是java.sql.Timestamp.(可能有其他方法为您的特定数据库执行此操作,但这可能是最简单的通用解决方案):

long dateLong = date.getTime();
insertStatement.setTimestamp(1, new java.sql.Timestamp(dateLong));
Run Code Online (Sandbox Code Playgroud)