2

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 ServerDateDiff仅减去日期时间值(28 - 26)的天部分,而 .NetDateDiff精确地减去两个日期时间值作为秒或毫秒并转换为等效的天值。

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

提前致谢

4

2 回答 2

4

实际上 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

于 2012-12-26T06:49:05.350 回答
1

Day DateDiff向下舍入返回的数字。尝试返回小时数并除以 24 以获得天数

DateDiff(DateInterval.Hour,Convert.ToDateTime("26-12-2012 12:00:05 AM"), 
Convert.ToDateTime("28-12-2012 12:00:00 AM"))/24
于 2012-12-26T06:21:09.373 回答