web-dev-qa-db-ja.com

Joda Time DateTimeオブジェクトをSQL Server形式の文字列に変換するにはどうすればよいですか?

Joda-Time ライブラリをJavaで使用していて、日時を org.joda.time.DateTime オブジェクトとして保存しています。

このDateTimeオブジェクトをSQLサーバー(タイムゾーンを含む)で正しく解析される文字列に確実に変換して、INSERT SQLステートメントで使用できるようにするにはどうすればよいですか?

20
sanity

_Java.sql.Timestamp_PreparedStatement#setTimestamp() とともに使用します。

_ps.setTimestamp(1, new Timestamp(dateTime.getMillis()));
_

_Java.sql.Date_ は日付部分のみを保存し、時間部分は保存しないことに注意してください。

10
BalusC

あなたはこの簡単なコードを試すことができます:

DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);
43
Vito

タイムゾーンを考慮するように注意してください。新しいTimestamp()の使用は、GMTではミリ秒単位の時間を想定しているため、注意が必要です。

    DateTime dt = new DateTime(2010, 1, 1, 14, 30, 59, 1, DateTimeZone.forOffsetHoursMinutes(7, 0));
    Timestamp ts = new Timestamp(dt.getMillis());
    System.out.println(dt); // prints 2010-01-01T14:30:59.001+07:00
    System.out.println(ts); // prints 2010-01-01 08:30:59.001

    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    String sqlTimeString = fmt.print(dt);
    System.out.println(sqlTimeString); // prints 2010-01-01 14:30:59
7
vladaman

単に機能

この単純な関数を使用して、SQLに適した日付形式をJodaTimeDateTimeオブジェクトから取得します。

// Converts a DateTime object into a SQL-format friendly string.
//
// Return format looks like this: 2014-01-22 10:05:34.546
//
public static String toSql(DateTime dateTime) {
    return new Timestamp( dateTime.getMillis() ).toString();
}
3
Joshua Pinter