2012-12-26 37 views
2

SQL服务器:SQL服务器则DateDiff Vs的净则DateDiff

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精确地将两个日期时间值减去秒或毫秒并转换为等值的日期值。

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

在此先感谢

回答

4

其实VB.NET表达你返回正确的值的数量自hours总数不等于48 .Hence它返回1

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

尝试除以秒总数的值在一天这是86400.0

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

返回的值将是1.9999421代替2

以秒为2日期之间的差是172795这是小于172800(2天内的总秒数)。因此,如果未将结果四舍五入,函数应仅返回1

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