gpt4 book ai didi

.net - SQL Server DateDiff 与 .Net DateDiff

转载 作者:行者123 更新时间:2023-12-02 22:18:51 27 4
gpt4 key购买 nike

SQL服务器:

DECLARE @Date1 DATETIME
SET @Date1 = '2012-26-12 12:00:05 AM'

DECLARE @Date2 DATETIME
SET @Date2 = '2012-28-12 12:00:00 AM'

SELECT @Date1, @Date2, DATEDIFF(DAY,@Date1,@Date2)

return 2

VB.Net

DateDiff(DateInterval.Day,Convert.ToDateTime("26-12-2012 12:00:05 AM"), 
Convert.ToDateTime("28-12-2012 12:00:00 AM"))

return 1

为什么结果不同?我的两分钱是 SQL Server 的 DateDiff 只减去日期时间值的天部分 (28 - 26) 而 .Net DateDiff 精确地减去两个日期时间值作为秒或毫秒并转换成等值的日值。

或者,是因为操作系统的区域和语言设置?

提前致谢

最佳答案

实际上,VB.NET 表达式返回了正确的值,因为 hours 的总数不等于 48。因此它返回 1

在 SQL Server 中,DateDiff 函数返回一个舍入值。

尝试将该值除以一天中的总秒数,即 86400.0

SELECT @Date1, @Date2, DATEDIFF(ss,@Date1,@Date2) /86400.0

返回的值将是 1.9999421 而不是 2

以秒为单位的 2 个日期之间的差异是 172795,小于 172800(2 天的总秒数)。因此,如果您的函数应该只返回 1不对结果进行四舍五入

关于.net - SQL Server DateDiff 与 .Net DateDiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036532/

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