我正在查看一些基本上执行以下操作的代码:
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日期异常。在某些系统上,默认日期格式为2013-01-25 00:00:00.0,其他系统在2013-01-25 00:00:00。 JVM,OS和Oracle版本在不同环境之间是不同的(尽管使用Oracle并在unix上运行)。
更改代码可能很复杂。我想知道是否有一个环境变量或类似的东西可以设置为使rs.getString()返回的日期格式一致?
答案 0 :(得分: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
有关ResultSet的更多信息:http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
答案 1 :(得分:3)
而不是使用
String myDateStr = rs.getString("MY_DATE")
你应该使用
Timestamp timestamp = rs.getTimestamp("MY_DATE");
JDBC / Database将为您处理日期转换。
答案 2 :(得分:2)
如果该字段的类型为Date
,则将其作为java.sql.Date
读取,并在此之后执行您需要的任何转换。否则,你将受到数据库实施的支配。
答案 3 :(得分:0)
对于我使用的Oracle JDBC驱动程序,格式在驱动程序库中是硬编码的,因此,如果使用不同的驱动程序版本,则应该只在系统上有所不同。
请参阅我在此处尝试回答同一问题:Where is the date format specified when reading a date as a string from JDBC ResultSet。
(对于问一个单独的问题道歉,但是由于你的问题已经多次回答,并且只是回答了“只是不要那样做”,我再次尝试了......)。