【发布时间】:2014-06-02 17:51:22
【问题描述】:
由于 Date 仅使用高达秒的精度,我们需要使用时间戳来获得更高的精度(高达毫秒)。
我运行查询并按 create_date 字段的降序排序,该字段根据事务执行以正确的顺序返回结果。
3 个具有不同事务代码(TRN、DII、DRD)的结果按顺序显示相同的 create_date 值(例如:28-MAY-13 12.09.45)。
我看不到毫秒,但 DRD 是在 DII 之前创建的几毫秒,而 DII 是在 TRN 之前几毫秒创建的。
所以它确实捕获了高达毫秒的创建时间并以正确的顺序相应地显示,但是我如何才能看到这个时间? 我试过了:
to_timestamp(create_date, 'DD.MM.YYYY HH24:MI:SSFF3' )
但毫秒部分仍显示 0。
【问题讨论】:
-
根据Oracle 11.1 Docs
For each DATE value, Oracle stores the following information: century, year, month, date, hour, minute, and second.注意他们没有列出毫秒数。 -
道歉 - 刚刚意识到您使用的是 TIMESTAMP 数据类型。
-
如果
create_date列是TIMESTAMP数据类型,那么您不需要使用to_timestamp函数来转换该值。在具有TIMESTAMP(6)列的 Oracle Jobs Scheduler 表上运行以下查询显示毫秒数:select last_start_date, to_char(last_start_date, 'DD.MM.YYYY HH24:MI:SS:FF3') from SYS.all_scheduler_jobs
标签: sql oracle datetime oracle11g