我正在尝试使用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
我想拼命地保留毫秒。
答案 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
。