java - 如何将unix时间戳转换为oracle DATE

标签 java sql oracle unix timestamp

我在oracle中有一个日期类型,我想将unix时间戳数据插入其中。

我在 PL/SQL 中使用了这个有效的 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

我的 session 时区是+8。 怎么了?

最佳答案

试试这个代码:

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

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

关于java - 如何将unix时间戳转换为oracle DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377928/

相关文章:

java - Android:当我尝试打开网页时,应用程序在手机上崩溃,但在模拟器上正常工作

java - 带有 SpannableStringBuilder 和 ImageSpan 的可包装 TextView 隐藏每一行的最后一个图像

java - 在Java中定义一个字符串数组

sql - 使用表值函数将单行转换为 Select 中的多行

mysql - where 子句中的未知列

用于基于 ARM 的 Debian 设备的 Oracle Instant Client

java - Class.getConstructor函数参数

sql - 棘手的逻辑问题 - 如何为此查询创建基于集合的解决方案?

oracle - 一种在 PL/SQL 中将按表索引转换为简单表的优雅方法,然后循环遍历每个条目

oracle - 在 Oracle 中删除用户级联