Различные значения отображения даты между базой данных и таблицей данных - PullRequest
2 голосов
/ 29 сентября 2010

У меня проблема с отображением дат из базы данных Oracle в веб-приложении Java с использованием таблицы данных JSF.Отображаемая дата отличается от даты в базе данных.

Вот несколько примеров:

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);
    }  
}  

Что такоепричина и решение моей проблемы?

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Попробуйте использовать f:convertDateTime конвертер с выходом JSF и установите для него правильный атрибут timeZone.
Пример (редактирование):

<h:outputText value="#{bean.myDate}">
    <f:convertDateTime timeZone="America/Los_Angeles" type="date" pattern="MM/dd/yyyy" />
</h:outputText>
1 голос
/ 29 сентября 2010

Oracle хранит даты, используя внутренний формат, который не имеет никакого отношения к тому, как он отформатирован для отображения.

То, что вы видите, - это два разных формата даты, используемых разными внешними интерфейсами.

Чтобы заставить запрос использовать выбранный вами формат, лучше всего использовать TO_CHAR, например ::

.
SELECT TO_CHAR(mydatecolumn,'DD-MON-YYYY') FROM mytable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...