sql - 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 ...
它有什么问题?
上周工作正常。
解决方案
两个时间戳之间的差异将产生间隔,即天到秒。
如果您想要精确的小数,那么您可以使用日期数据类型来实现它。
Select
...
cast(ssts.TIMESTAMP as date) - cast(MAX(pssts.TIMESTAMP) as date)
...
请参阅时间戳和日期差异的这个db<>fiddle演示。
干杯!!
推荐阅读
- c++ - 在 C++ 中反转数组时,为什么我会在输入和输出之间得到一个“随机”数?
- python - 代码在 Jupyter 中有效,但在 Spyder 中出错
- javascript - 当网格生成低于 16 行时,网格拉伸问题
- c++ - 从 C++ 中的输入收集数据时,有没有更有效的方法可以处理变量?
- ponylang - 为什么赋值返回旧值而不是新值?
- c# - C# UWP - 如何获取对象的拖动图像?
- ruby-on-rails - Rails 应用程序、capistrano、nginx 和 puma 502 错误网关
- lua - 如何从 Lua 中的变量调用表?
- asp.net - 无法在 ASP.NET 中执行会话状态
- php - 仅显示具有特定 ID 的数据数据库