如何在oracle

时间:2016-02-22 23:26:23

标签: oracle date oracle11g

我必须处理这种超精确的日期差异。

在存储过程中:

d1 := abs(q.date - p.date);
-- renders .00001157407407407407407407407407407407407407

d2 := abs(z.date - p.date);                  
-- renders .00001157407407407407407407407407407407407407 (the same value assigned to d1)

但我知道d1与d2略有不同。喜欢的东西:

真实的d1:.00001157407407407407407407407407407407407407001

真实的d2:.00001157407407407407407407407407407407407407002

有没有办法增加oracle的d1和d2的数值精度?

感谢。

1 个答案:

答案 0 :(得分:2)

Oracle date具有精确到秒的精度。减去两个日期会产生天数差异。 1天= 24小时= 24 * 60(1440)分钟= 1440 * 60(86400)秒。因此,两个date值之间的最小可能差异是1/86400 = 1.157 * 10 ^ -5(0.00001157)天。两个日期差异不可能变化小于。

因此,您的问题似乎不是数字精度,而是date精度之一。您可以将date列更改为timestamp列,这些列可以存储高达纳秒的精度,尽管Oracle只能从操作系统获得毫秒(Window)或微秒(Unix)精度。这样可以在您存储的时间组件中获得更精细的分辨率。