保留Oracle DB插入中的毫秒数

时间:2014-05-13 20:53:22

标签: java oracle

我正在尝试使用Java在Oracle表中插入记录。有问题的字段被定义为时间戳。

我使用以下声明:

    INSERT INTO MYTAB (UNIQUE_ID, CREATED_AT) VALUES ('137', ?)";
    PreparedStatement updatePerf = connection.prepareStatement(updateString);
    updatePerf.setTimestamp(1,getCurrentTimeStamp());

getCurrentTimeStamp如下所示:

    private static java.sql.Timestamp getCurrentTimeStamp() {
        long time = System.currentTimeMillis();
        java.sql.Timestamp timestamp = new java.sql.Timestamp(time);
        System.out.println("Time in milliseconds :" + timestamp);
        return timestamp;
   }

当程序运行时,我仍然用毫秒打印正确的时间戳:

    Time in milliseconds :2014-05-13 15:40:03.076

但是在数据库上,我只看到

    '137',2014-05-13 15:40:03

我想拼命地保留毫秒。

1 个答案:

答案 0 :(得分:1)

当您在数据库上说"我只看到",您是如何从Oracle获取数据的?你有没有正确设置NLS_TIMESTAMP? 尝试设置:

NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'
SQL*Plus

,然后尝试查询,看看是否可以看到毫秒组件。

或者,您可以使用to_char()函数格式化时间戳列:

select to_char(my_timestamp_col,'YYYY-MM-DD HH:MI:SS.FF') from my_table;

另请注意,如果您的列是带时区的时间戳,则您需要设置NLS_TIMETAMP_TZ_FORMAT