SQL Server2008で導入されたdate、time、datetime2、datetimeoffset型について

プログラミング SQL Server

SQL Server2008では新しい日付/時刻データ型date/time/datetime2/datetimeoffsetが追加されているようなのでちょこっとメモしておきます。

SQL Server のデータ型 説明
date dateデータ型は、01年1月1日から
9999年12月3日の範囲を
1日の精度で表すことができます。
既定値は1900年1月1日です。
記憶領域のサイズは3バイトです。
time timeデータ型は、24 時間形式で
時刻値のみを格納します。
time データ型は、00:00:00.0000000から
23:59:59.9999999 の範囲を100ナノ秒の精度で
表すことができます。
既定値は 00:00:00.0000000(午前0時)です。
timeデータ型はユーザー定義による1秒未満の
時間の有効桁数をサポートし、
記憶領域のサイズは、指定された
有効桁数に応じて3バイト~6バイトになります。
datetime2 datetime2データ型は、date型とtime型の
範囲および有効桁数を単一のデータ型として
組み合わせたものです。
既定値および文字列リテラルの形式は、
date型およびtime 型で定義されているものと
同じです。
datetimeoffset datetimeoffsetデータ型は、datetime2の
すべての機能に加えて、タイムゾーンオフセットを
持ちます。
タイム ゾーン オフセットは、[+|-] HH:MMとして
表されます。
HHは、タイムゾーンオフセットの時間数を表す
00~14の2桁の数字です。
MMは、タイムゾーンオフセットの付加的な
分数を表す0~59の2桁の数字です。
時刻の精度は100ナノ秒までサポートされます。
必須の+記号または-記号は、ローカル時刻を
取得する際、UTC (協定世界時または
グリニッジ標準時) を基準として
タイムゾーンオフセットを加算するか、
減算するかを示します。

SQLで確認してみます。

SELECT
   CAST(GETDATE() AS date) AS 'date'
   ,CAST(GETDATE() AS time) AS 'time'
   ,CAST(GETDATE() AS datetime2) AS 'datetime2'
   ,CAST(GETDATE() AS datetimeoffset) AS 'datetimeoffset'

実行結果は以下です。

   date          time        
2012-10-01  12:34:56.4900000 

  datetime2                      datetimeoffset
2012-10-01 12:34:56.4900000  2012-10-01 12:34:56.4900000 +00:00
タイトルとURLをコピーしました