san*_*ity 20 java sql-server jdbc jodatime
我在Java中使用Joda-Time库,并将日期和时间存储为org.joda.time.DateTime对象.
如何可靠地将此DateTime对象转换为将由SQL服务器(包括时区)正确解析的String,以便我可以在INSERT SQL语句中使用它?
Vit*_*ito 43
你可以尝试这个简单的代码:
DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 10
使用java.sql.Timestamp带PreparedStatement#setTimestamp().
ps.setTimestamp(1, new Timestamp(dateTime.getMillis()));
Run Code Online (Sandbox Code Playgroud)
请注意,java.sql.Date仅存储日期部分,而不存储时间部分.
小心考虑时区.使用新的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
Run Code Online (Sandbox Code Playgroud)