SQL Server 2008 : .NET Framework で新しい日付型を使用することができるか?

.NET Framwoek 3.5のStstem.Data.SqlTypeネームスペース以下にクラスは追加されているか?

Visual Studio 2008のMSDNライブラリドキュメント、オブジェクトブラウザによる実際のオブジェクトの調査でも、System.Data.SqlTypeネームスペースにSQL Serverに追加された日付型に対応したクラス/構造体は追加されていない。

SQL Server 2008 July CTPインストール環境でも調査を行ったが、追加されたり、アセンブリが差し替えられたりといったことはなかった。

.NET Framework のDateTime型はSQL Serverに追加された新しい日付型と同様もしくはそれ以上の精度を持っているのか?

結論から言えば、SQL Server 2008にて追加されたdatetime2型の持つ日時範囲、最小分解能の仕様と、.NET FrameworkのDateTime型の持つものは同じ仕様であり、SQL Serverに追加された日付型との間で日時データをやりとりしても、精度落ち等は起きないはずである。

以下は.NET FrameworkのDateTime型の仕様。MSDNライブラリから引用した。

DateTime 値型は、A.D. (西暦紀元) 0001 年 1 月 1 日の午前 00:00:00 から A.D. (西暦紀元) 9999 年 12 月 31 日の午後 11:59:59 までの間の値で日付と時刻を表します。

時刻値は 100 ナノ秒単位 (タイマ刻み) で表し、日付は GregorianCalendar 暦の A.D. (西暦紀元) 1 年 1 月 1 日の午前 00:00 からのタイマ刻み数で表します。たとえば、タイマ刻み値 31241376000000000L は、0100 年 1 月 1 日 (金曜日) の深夜 12:00:00 を表します。DateTime 値は、常に、明示的な暦または既定の暦のコンテキストで表されます。

 

現状では、.NET FrameworkからSQL Serverに追加された一連の新しい日付型を操作する方法がない。SQL Server 2008では日付型だけでなく、GIS等で使われる座標系のデータ型も追加されており、これらを有効に活用されるためにもSQL Server 2008に対応できる新しいSQL Server向けデータプロバイダ、型のセットの提供が望まれる。

SQL Serverのデータープロバイダ、型セットは.NET Frameworkのコア(中心部分)にADO.NETの一部として標準的に含まれてきたが、SQL Server 2008と.NET Frameworkの開発スケジュールが同期されなくなる傾向はこれからも進んでいくであろうから、SQL Serverに関するアセンブリは、.NET Frameworkのコアからは引き離して、独立したコンポーネントにした方がいいのではないだろうか。

コメントを残す