как конвертировать метку времени Unix в оракул ДАТА

1

У меня есть тип даты в oracle, и я хочу вставить в него данные timestamp unix.

Я использую этот SQL-запрос в PL/SQL, который работает.

select TO_DATE('19700101','yyyymmdd') + 1413360712/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 from dual;

выход правильный.

2014/10/15 16:11:52

Но когда я использую его в java, вывод отличается.

            String sql = "insert into appliance_application (id, emp_id, typeid, num, spec, action, actiontime, oper_id) VALUES(applianceapplication_seq.nextval, ?, ?, ?, ?, ?, TO_DATE('19700101','yyyymmdd') + 1413360712/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24, ?)";
            pstmt = conn.prepareStatement(sql);

            for(int i=0; i < list.size(); i++){
                Itembean ib = (Itembean)list.get(i);
                pstmt.setObject(1, ib.getEmpid());
...   



                pstmt.setObject(5, ib.getAction());
//              pstmt.setLong(6, ib.getActiontime());
//              pstmt.setObject(7, ib.getOper_id());
                pstmt.setObject(6, ib.getOper_id());
                log.info(ib.getActiontime()+ "....");

                pstmt.addBatch();
            }

...

Я проверяю вставленные данные и обнаруживаю, что вывод неправильный.

2014/10/15 8:11:52

мой сеанс zonezone - +8. что не так?

  • 2
    Вы уверены, что sessiontimezone сеанса Java на самом деле равен +8? Держу пари, что языковой стандарт сервера приложений Java устанавливает часовой пояс сеанса на GMT.
  • 0
    Так что это о часовом поясе сессии Java. Я использую Tomcat 7 на Windows. Я не знаю, где добавить -Duser.timezone=GMT+08 в catalina.bat.
Показать ещё 1 комментарий
Теги:
timestamp

1 ответ

0

Попробуйте этот код:

public Timestamp parseDateToTimestamp(java.util.Date inDate)
{
    if (inDate == null)
        return null;

    return new java.sql.Timestamp(inDate.getTime());
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню