52

java.util.Date在将其转换为 java.sql.Timestamp 后尝试插入,我正在使用以下代码段:

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());

但这给了sq2014-04-04 13:30:17.533

有没有办法在没有毫秒的情况下获得输出?

4

5 回答 5

47

您可以使用 a 切断毫秒Calendar

java.util.Date utilDate = new java.util.Date();
Calendar cal = Calendar.getInstance();
cal.setTime(utilDate);
cal.set(Calendar.MILLISECOND, 0);
System.out.println(new java.sql.Timestamp(utilDate.getTime()));
System.out.println(new java.sql.Timestamp(cal.getTimeInMillis()));

输出:

2014-04-04 10:10:17.78
2014-04-04 10:10:17.0
于 2014-04-04T08:11:03.207 回答
15

看看SimpleDateFormat

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());  

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
System.out.println(sdf.format(sq));
于 2014-04-04T08:07:51.950 回答
8

问题在于您打印时间数据的方式

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());
System.out.println(sa); //this will print the milliseconds as the toString() has been written in that format

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(timestamp)); //this will print without ms
于 2014-04-04T08:08:26.030 回答
3

我建议使用 apache.commons 库中的 DateUtils。

long millis = DateUtils.truncate(utilDate, Calendar.MILLISECOND).getTime();
java.sql.Timestamp sq = new java.sql.Timestamp(millis );

编辑:固定Calendar.MILISECONDCalendar.MILLISECOND

于 2014-04-04T08:09:59.083 回答
1
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println("utilDate:" + utilDate);
System.out.println("sqlDate:" + sqlDate);

这给了我以下输出:

 utilDate:Fri Apr 04 12:07:37 MSK 2014
 sqlDate:2014-04-04
于 2014-04-04T08:08:37.247 回答