20

我在 Java 中使用Joda-Time库,并将日期和时间存储为org.joda.time.DateTime对象。

我怎样才能可靠地将此 DateTime 对象转换为将由 SQL 服务器(包括时区)正确解析的字符串,以便我可以在 INSERT SQL 语句中使用它?

4

4 回答 4

43

你可以试试这个简单的代码:

DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);
于 2013-11-20T06:37:06.263 回答
10

java.sql.Timestamp与 一起使用PreparedStatement#setTimestamp()

ps.setTimestamp(1, new Timestamp(dateTime.getMillis()));

请注意,java.sql.Date它只存储日期部分,而不是时间部分。

于 2010-09-23T16:27:40.533 回答
7

小心考虑时区。使用 new 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
于 2011-07-25T08:33:46.603 回答
3

简单功能

我使用这个简单的函数从JodaTime DateTime对象中获取 SQL 友好的日期格式:

// 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();
}
于 2014-01-22T17:06:53.020 回答