【问题标题】:Oracle date column returns results in order but need to see millisecondsoracle日期列按顺序返回结果但需要看毫秒
【发布时间】: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


【解决方案1】:

您的 created_date 字段应为 TIMESTAMP 类型。插入此列时使用systimestamp 而不是sysdate 来存储毫秒数。

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多