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