我必须在 mssql db 中存储一些间隔。我知道日期时间的准确性约为。3.3ms(只能结束0、3和7)。但是当我计算日期时间之间的间隔时,我发现结果只能以 0、3 和 6 结尾。所以我总结的间隔越多,我的精度就越松。是否有可能在毫秒内获得准确的 DATEDIFF?
declare @StartDate datetime
declare @EndDate datetime
set @StartDate='2010-04-01 12:00:00.000'
set @EndDate='2010-04-01 12:00:00.007'
SELECT DATEDIFF(millisecond, @StartDate, @EndDate),@EndDate-@StartDate, @StartDate, @EndDate
我希望看到 7 个广告而不是 6 个。(并且应该尽可能快)
** 更新 **
我可以看到 DATEDIFF 值不仅以 0、3、6 结尾,而且还以 4、7 结尾(可能还有其他值),但问题是它们仍然不准确。亚历克斯建议的解决方案正在奏效。如果您不想记住正确的日期时间格式,也可以使用:
SELECT DATEDIFF(SECOND, @StartDate, @EndDate)*1000 + DATEPART(MILLISECOND , @EndDate) - DATEPART(MILLISECOND , @StartDate)
我仍然想知道为什么DATEDIFF(millisecond, @StartDate, @EndDate)
不准确?