将java日期转换为Sql时间戳

Shi*_*itu 49 java sql datetime sqldatetime

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

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());
Run Code Online (Sandbox Code Playgroud)

但是,这是给我sq2014-04-04 13:30:17.533

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

Sto*_*ica 45

您可以使用以下命令切断毫秒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()));
Run Code Online (Sandbox Code Playgroud)

输出:

2014-04-04 10:10:17.78
2014-04-04 10:10:17.0
Run Code Online (Sandbox Code Playgroud)


Mar*_*kus 14

看看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));
Run Code Online (Sandbox Code Playgroud)


Red*_*ddy 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
Run Code Online (Sandbox Code Playgroud)

  • OP有兴趣将数据存储到数据库中 - 根本不需要文本转换.基本上问题还不清楚 - OP是否不想*存储*毫秒或者不想*渲染*它们并不明显. (3认同)

Mir*_*zak 5

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

long millis = DateUtils.truncate(utilDate, Calendar.MILLISECOND).getTime();
java.sql.Timestamp sq = new java.sql.Timestamp(millis );
Run Code Online (Sandbox Code Playgroud)

编辑:固定Calendar.MILISECONDCalendar.MILLISECOND

  • 请将“Calendar.MILISECONDS”更改为“Calendar.MILLISECOND”,这是正确的属性 (2认同)