2012-12-26 41 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