Java 在Oracle数据库插入中保留毫秒
我正在尝试使用Java在Oracle表中插入一条记录。该字段被定义为时间戳 我使用了一种新的方法来表达以下声明:Java 在Oracle数据库插入中保留毫秒,java,oracle,Java,Oracle,我正在尝试使用Java在Oracle表中插入一条记录。该字段被定义为时间戳 我使用了一种新的方法来表达以下声明: INSERT INTO MYTAB (UNIQUE_ID, CREATED_AT) VALUES ('137', ?)"; PreparedStatement updatePerf = connection.prepareStatement(updateString); updatePerf.setTimestamp(1,getCurrentTimeStamp
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
我想拼命地保留这一切 当你说“在数据库上,我只看到”时,你是如何从Oracle获取数据的?您是否预先设置了NLS_时间戳?
尝试设置:
NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'
在SQL*Plus
中,然后尝试查询,看看是否可以看到thw毫秒组件
或者,您可以将带有的时间戳列格式化为\u char()
函数:
select to_char(my_timestamp_col,'YYYY-MM-DD HH:MI:SS.FF') from my_table;
另外,请注意,如果您的列是带有时区的时间戳,则需要设置
NLS\u TIMETAMP\u TZ\u格式。类型是timestamp
还是timestamp(0)
?MYTAB表是如何定义的,您是否有可以发布的创建表?MYTAB.CREATED\u AT
是什么类型?如果它只是一个Oracle日期
,则只能精确到秒。