sql - 计算两个时间戳之间的差异时出现ORA-01873

标签 sql oracle

我正在尝试生成两个时间戳之间的天数,作为精确的小数。
我的代码生成 ORA-01873: 间隔的前导精度太小

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

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

有什么问题吗?
上周运行良好。

最佳答案

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

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

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

查看此db<>fiddle时间戳和日期差异的演示。

干杯!!

关于sql - 计算两个时间戳之间的差异时出现ORA-01873,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59258926/

相关文章:

php - 如何在同一字段中的两个值的子句?

sql - PostgreSQL:更新行(如果存在)

android - Android Studio 可以使用 OpenJDK 还是需要 Linux 上的 Oracle JDK?

sql - 在 oracle sql 中仅插入 1 行的更快方法

php - 按外键计算行数

sql - 在存储过程中分组

c# - Visual Studio 2012 数据库图?

sql - MyBatis RowBounds vs Oracle 分页查询使用 rownum 和嵌套子查询

Oracle 获取列数据大小

sql - Oracle SQL 获取两个特殊字符之间的值