我在使用JSF数据表的Java Web应用程序中显示来自Oracle数据库的日期时遇到问题。显示的日期与数据库中的日期不同。
以下是一些例子:
in oracle: 24-APR-87 display in datatable: Apr 23, 1987
in oracle: 01-JAN-10 display in datatable: Dec 31, 2009
in oracle: 13-MAR-89 display in datatable: Mar 12, 1989
这是我的Java源代码:
public Result getTable() {
try {
Class.forName(dbDriver);
con = DriverManager.getConnection(url);
ps = con.createStatement();
String query = "SELECT * from " + getTableName();
rs = ps.executeQuery(query);
return(ResultSupport.toResult(rs));
} catch(Exception e) {
return(null);
}
}
我的问题的原因和解决方案是什么?
答案 0 :(得分:1)
Oracle使用内部格式存储日期,该格式与格式化显示方式无关。
您所看到的是不同前端使用的两种不同的日期格式。
要强制查询使用您选择的格式,最好使用TO_CHAR
,例如:
SELECT TO_CHAR(mydatecolumn,'DD-MON-YYYY') FROM mytable;
答案 1 :(得分:1)
尝试将f:convertDateTime
转换器与JSF输出一起使用,并为其设置正确的timeZone
属性。
示例(编辑):
<h:outputText value="#{bean.myDate}">
<f:convertDateTime timeZone="America/Los_Angeles" type="date" pattern="MM/dd/yyyy" />
</h:outputText>