6

我正在查看一些基本上执行以下操作的代码:

ResultSet rs = ps.executeQuery();
String myDateStr = rs.getString("MY_DATE"); //field is of type Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'.0'");
Date myDate = sdf.parse(myDateStr);

在某些环境中,最后一行有效,而在其他环境中,它会引发 Unparseable date 异常。看起来在某些系统上默认日期格式是 2013-01-25 00:00:00.0,而在其他系统上是 2013-01-25 00:00:00。JVM、OS 和 Oracle 版本在环境之间是不同的(虽然都使用 Oracle 并在 unix 变体上运行)。

更改代码可能很复杂。我想知道是否可以设置一个环境变量或类似的变量以使从 rs.getString() 返回的日期格式一致?

4

4 回答 4

4

尝试这个:

ResultSet rs = ps.executeQuery();

Date myDate = rs.getDate("MY_DATE"); 

或这个 :

ResultSet rs = ps.executeQuery();
String myDateStr = rs.getString("MY_DATE"); 
Date myDate = valueOf(myDateStr);

有关日期的更多信息: http
://docs.oracle.com/javase/7/docs/api/java/sql/Date.html 有关结果集的更多信息:http: //docs.oracle.com/javase/7/docs/api /java/sql/ResultSet.html

于 2013-02-05T05:53:58.773 回答
3

而不是使用

String myDateStr = rs.getString("MY_DATE") 

你应该使用

Timestamp timestamp = rs.getTimestamp("MY_DATE");

JDBC / 数据库将为您处理日期转换。

于 2013-02-05T05:49:52.050 回答
2

如果该字段是 type Date,则将其读取为 ajava.sql.Date并在此之后进行所需的任何转换。否则,您将受到数据库实现的摆布。

于 2013-02-05T05:49:49.990 回答
0

对于我正在使用的 Oracle JDBC 驱动程序,格式在驱动程序库中是硬编码的,因此只有在使用不同的驱动程序版本时才会因系统而异。

请参阅我尝试在此处获得相同问题的答案:从 JDBC ResultSet 将日期作为字符串读取时指定的日期格式在哪里

(很抱歉问了一个单独的问题,但是由于您的问题已经多次回答了有用的“只是不要那样做”的回答,所以我又试了一次......)。

于 2014-01-16T22:51:16.047 回答