System.DateTime メソッド (LINQ to SQL)
LINQ to SQL は、次の DateTime メソッドをサポートしていません。
.NET との相違
SQL Server および共通言語ランタイム (CLR) の DateTime 型は、次の表に示すように、範囲とタイマ刻みの精度がそれぞれ異なります。
型 |
最小値 |
最大値 |
タイマ刻み |
---|---|---|---|
System.DateTime |
0001 年 1 月 1 日 |
9999 年 12 月 31 日 |
100 ナノ秒 (0.0000001 秒) |
T-SQL DateTime |
1753 年 1 月 1 日 |
9999 年 12 月 31 日 |
3.33... ミリ秒 (0.0033333 秒) |
T-SQL SmallDateTime |
1900 年 1 月 1 日 |
2079 年 6 月 6 日 |
1 分 (60 秒) |
CLR DateTime 型の範囲と精度は、SQL Server 型の範囲と精度より大きな値です。そのため、SQL Server のデータが CLR 型として表されるときに、範囲や精度が失われることはありません。しかし、逆の場合は、範囲や精度が失われることがあります。
SQL Server の日付には、TimeZone の概念はありません。これは、CLR では確実にサポートされている機能です。
ユーザーは、データベースに日付を格納する方法 (現地時刻、UTC、またはバリアント時刻として) を決定し、LINQ to SQL クエリの前後に必要な変換を自分で実行する必要があります。
System.DateTime の減算パターン
たとえば、次のようなパターンを考えてみます。
(dateTime1 – dateTime2).{Days, Hours, Milliseconds, Minutes, Months, Seconds, Years}
これが認識されると、次に示すように、DATEDIFF への直接呼び出しに変換されます。
DATEDIFF({DatePart}, @dateTime1, @dateTime2)