gpt4 book ai didi

SQL Server DATEDIFF 准确性

转载 作者:行者123 更新时间:2023-12-02 02:33:42 33 4
gpt4 key购买 nike

我必须在 mssql 数据库中存储一些间隔。我知道日期时间的准确性约为。 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) 不准确?

最佳答案

如何计算 MS 差异(当您减去 DATEPART 时它是准确的)然后将其添加到排除 MS 的 DATEDIFF 差异?

SELECT DATEDIFF(MILLISECOND, CONVERT(VARCHAR, @StartDate, 120), CONVERT(VARCHAR, @EndDate, 120)) + DATEPART(MILLISECOND , @endDate) - DATEPART(MILLISECOND , @StartDate)

.003->.007 为 4,.000->.007 为 7

关于SQL Server DATEDIFF 准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719657/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com