我试图以秒为单位提取两个 SQL DateTime 值之间的差异,并使用小数位进行一些性能监控。
我有一个表“Pagelog”,它有一个“创建”和“结束”日期时间。在过去,我能够做到以下几点:
SELECT DATEDIFF(ms, pagelog_created, pagelog_end)/1000.00 as pl_duration FROM pagelog
但是我已经开始收到以下错误:
Msg 535, Level 16, State 0, Line 1
The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.
我已经看到许多对这个错误的回应,指出我应该使用不太精确的测量单位。但是当我需要区分 2.1 秒和 2.9 秒时,这几乎没有帮助,因为 DATEDIFF(s,..,..) 将返回 INT 结果并失去我需要的准确性。
我最初认为这是由于我的表中的一些值具有很大的范围但运行此:
SELECT DATEDIFF(s, pagelog_created, pagelog_end) FROM pagelog
ORDER BY DATEDIFF(s, pagelog_created, pagelog_end) DESC
返回最大值 30837,即 8.5 小时或 30,837,000 毫秒,就我所知,在 SQL INT 的范围内?
任何帮助将不胜感激,据我所知,我有两个选择:
- 以某种方式解决数据问题,找到罪魁祸首值
- 找到计算值之间差异的不同方法
谢谢!