TSQL DateDiffに対してC#でTimeSpan機能を使用すると、結果が異なるようです。 DateDiffは、タイムスタンプに関係なく、2つの日付の間の日数を与えているようですが、C#ではタイムスタンプを考慮しているようです。第一のタイムスタンプは午前10時で、そして第二のタイムスタンプは午前9時に次の日の場合DateDiff関数は、C#のDateTimeとDateTimeのスパンを使用して1C#でTSQLのDateDiffを正しくエミュレートする方法
declare @d1 datetime
declare @d2 datetime
set @d1 = '2/9/2011 10:00'
set @d2 = '2/10/2011 09:00'
select datediff(day, @d1, @d2)
-- prints 1
を返します。一方ので、タイムスパンは、0日です。
// will return 1 with same dates
private static int DateDiff(DateTime from, DateTime to)
{
return (new DateTime(from.Year, from.Month, from.Day)
- new DateTime(to.Year, to.Month, to.Day)).Days;
}
質問がありますか?いいですか?
DATEDIFFが交差し、そのような境界の数を返すためです。 [DATEDIFF(Transact SQL)](http://msdn.microsoft.com/en-us/library/ms189794.aspx) –