web-dev-qa-db-ja.com

Java日付をSQLタイムスタンプに変換

私はJava.util.DateをJava.sql.Timestampに変換した後に挿入しようとしていますが、次のスニペットを使用しています:

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

しかし、これはsq as 2014-04-04 13:30:17.533を私に与えています

ミリ秒なしで出力を取得する方法はありますか?

48
Shitu

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
45
janos

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));
12
Markus

問題は、時刻データの印刷方法にあります

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
8
Reddy

Apache.commonsライブラリのDateUtilsを使用することをお勧めします。

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

編集:Calendar.MILISECONDCalendar.MILLISECONDに修正

3
Miron Balcerzak
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
1
nikis