首页 > 解决方案 > ORA-01873 计算两个时间戳之间的差异时

问题描述

我试图产生两个时间戳之间的天数,作为一个精确的小数。
我的代码正在生成ORA-01873: the leading precision of the interval is too small

这条线似乎是罪魁祸首。
当我删除这一行时,查询再次开始工作。

SELECT
...
    EXTRACT(DAY FROM 24*60*60*(ssts.TIMESTAMP - MAX(pssts.TIMESTAMP)))/(24*60*60) AS DAYS_SINCE_PREV_TIMESTAMP,
...
FROM ...

它有什么问题?
上周工作正常。

标签: sqloracle

解决方案


两个时间戳之间的差异将产生间隔,即天到秒。

如果您想要精确的小数,那么您可以使用日期数据类型来实现它。

Select
...
cast(ssts.TIMESTAMP as date) - cast(MAX(pssts.TIMESTAMP) as date)
...

请参阅时间戳和日期差异的这个db<>fiddle演示。

干杯!!


推荐阅读