新しい日付データ型(date/time/datetime2/datetimeoffset)

SQL Server 2008 からは、新しい日付データ型として、date/time/datetime2/datetimeoffset の 4つが追加されました。それぞれの単位(精度)と内部的に使用するバイト数を、従来のデータ型(datetime / smalldatetime)と比較すると、次の表のようになります。

date データ型は、「日」単位でデータを格納できるデータ型で、使用バイト数を 3バイトに抑えることができるので、時間を格納する必要のないデータの場合には、大変便利なデータ型です。
time データ型は、「時間」のみを格納できるデータ型で、従来の datetime データ型よりも精度が高い時間(100ナノ秒)まで格納できるのが特徴です。
datetime2 データ型は、time データ型と同様、時間を 100ナノ秒まで格納でき、かつ従来の datetime データ型のように日付も格納できるのが特徴です。
datetimeoffset データ型は、datetime2 データ型の格納範囲に加えて、タイムゾーンのオフセット(UTC協定世界時からの時間差)を格納できるようになったデータ型です。


これらのデータ型は、次のように試すことができます。

SELECT
    CAST('2007-12-13 12:35:29.123' AS datetime) AS 'datetime'
   ,CAST('2007-12-13 12:35:29.123' AS smalldatetime) AS 'smalldatetime'
   ,CAST('2007-12-13 12:35:29.1234567 +12:15' AS date) AS 'date'
   ,CAST('2007-12-13 12:35:29.1234567 +12:15' AS time(7)) AS 'time'
   ,CAST('2007-12-13 12:35:29.1234567 +12:15' AS datetime2) AS 'datetime2'
   ,CAST('2007-12-13 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 'datetimeoffset'


そのほかの SQL Server 2008 の新機能の具体的な利用方法については、弊社執筆の SQL Server 2008 自習書シリーズ(下記 URL)の「SQL Server 2008 の注目の新機能をイチ早く試してみよう! 」編を参考にしてみてください。
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx