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

結果が異なるのはなぜですか?私の 2 セントは、SQL ServerDateDiffが日付時刻値 (28 - 26) の日の部分のみを減算するのに対し、.NetDateDiffは 2 つの日付時刻値を秒またはミリ秒として正確に減算し、同等の日付値に変換することです。

それとも、オペレーティング システムの地域と言語の設定が原因ですか?

前もって感謝します

4

2 に答える 2

4

実際には、VB.NET 式は正しい値を返しています。これは、の総数hoursが等しくないため48です。

SQL Server では、DateDiff 関数は四捨五入値を返します。

値を 1 日の合計秒数で割ってみてください。86400.0

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

返される値は、1.9999421代わりに2

秒単位の 2 つの日付の差は、(2 日間の合計秒数)172795未満172800です。したがって、結果を四捨五入しない場合、関数は 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 に答える