.NET F/W と SQL Server では、 3ミリ秒違う
どちらの DateTime も、 最大値は 9999年 12月 31日 …で。
じつは、 その日の 23時 59分 59秒 で。 ( ここまでは、 覚えていた f(^^; )
ところがなんと !!
その下のミリ秒の桁で違っていたんですねぇ。 なんたる迂闊 ! orz
I don't like having Nulls in DateTime columns
Min Date Max Date .Net 0001-01-01 00:00:00.000 9999-12-31 23:59:59.999 SQL Server 1753-01-01 00:00:00.000 9999-12-31 23:59:59.997
※ この表では 2ミリ秒の差に見えますが、 切り捨てているので正確には 2.9999ミリ秒の差になっています。long diff = (DateTime.MaxValue).Subtract(SqlDateTime.MaxValue).Ticks;
Assert.AreEqual<long>(29999, diff); // 29999 x 100nS = 2999.9pS = 2.9999mS
なお、 DateTime.MaxValue より 3ミリ秒小さい、 この SQL Server の最大日付を表す定数が、 ちゃんと切ってありました。 上のコードにも書いた、 SqlDateTime.MaxValue です。 → System.Data.SqlTypes.SqlDateTime.MaxValue
| 固定リンク
« [.NET] (続) フィードバック - WPF: テキストボックスに Maxlength の長さの日本語文字列が入力できない | トップページ | [VS2008] FAQ: TFS には、 本当に3つの異なるアカウントが必要? »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント
なぜ!?
投稿: aetos | 2009年9月24日 (木) 21時22分