datetime2 (Transact-SQL)

24 時間形式の時刻と組み合わせた日付を定義します。datetime2 は、既存の datetime 型を拡張して、日付範囲と既定の有効桁数を増やし、ユーザーが必要に応じて有効桁数を指定できるようにしたものと考えることができます。

Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。

datetime2 の説明

プロパティ

構文

datetime2 [ (fractional seconds precision) ]

使用法

DECLARE @MyDatetime2 datetime2(7)

CREATE TABLE Table1 ( Column1 datetime2(7) )

既定の文字列リテラル形式

(下位のクライアントに使用)

YYYY-MM-DD hh:mm:ss[.fractional seconds]

詳細については、「日時データの使用」の「下位クライアントの下位互換性」セクションを参照してください。

日付範囲

0001-01-01 ~ 9999-12-31

西暦 1 年 1 月 1 日~西暦 9999 年 12 月 31 日

時刻範囲

00:00:00 ~ 23:59:59.9999999

タイム ゾーン オフセット範囲

なし

要素範囲

YYYY は、年を表す 0001 ~ 9999 の 4 桁の数字です。

MM は、指定された年の 01 ~ 12 の月を表す 2 桁の数字です。

DD は、指定された月の (月に応じて) 01 ~ 31 の日を表す 2 桁の数字です。

hh は、時を表す 00 ~ 23 の 2 桁の数字です。

mm は、分を表す 00 ~ 59 の 2 桁の数字です。

ss は、秒を表す 00 ~ 59 の 2 桁の数字です。

n* は、秒の有効桁数を表す 0 ~ 7 桁の数字です (0 ~ 9999999)。

文字長

19 文字 (YYYY-MM-DD hh:mm:ss ) 以上、27 文字 (YYYY-MM-DD hh:mm:ss.0000000) 以下

有効桁数、小数点以下桁数

0 ~ 7 桁で、精度は 100ns です。既定の有効桁数は 7 桁です。

ストレージのサイズ

有効桁数が 3 未満の場合は 6 バイト、有効桁数が 3 および 4 の場合は 7 バイトです。その他のすべての有効桁数には 8 バイトが必要です。

精度

100 ナノ秒

既定値

1900-01-01 00:00:00

カレンダー

グレゴリオ暦

ユーザー定義の 1 秒未満の秒の有効桁数

タイム ゾーン オフセットへの対応と保持

不可

夏時間への対応

不可

データ型のメタデータについては、「sys.systypes (Transact-SQL)」または「TYPEPROPERTY (Transact-SQL)」を参照してください。一部の日付時刻データ型では、有効桁数および小数点以下桁数が可変です。特定の列の有効桁数および小数点以下桁数を取得する方法については、「COLUMNPROPERTY (Transact-SQL)」、「COL_LENGTH (Transact-SQL)」、または「sys.columns (Transact-SQL)」を参照してください。

datetime2 でサポートされる文字列リテラル形式

次の表は、datetime2 でサポートされている ISO 8601 および ODBC の文字列リテラル形式を一覧にしたものです。datetime2 の日付部分と時刻部分に使用できるアルファベット、数値、区切りなし、時刻の各形式については、「date (Transact-SQL)」および「time (Transact-SQL)」を参照してください。

ISO 8601

説明

YYYY-MM-DDThh:mm:ss[.nnnnnnn]

YYYY-MM-DDThh:mm:ss[.nnnnnnn]

この形式は、セッションのロケール設定である SET LANGUAGE および SET DATEFORMAT の影響を受けません。文字列リテラルには、T、コロン (:)、およびピリオド (.) が含まれます (例 : '2007-05-02T19:58:47.1234567')。

ODBC

説明

{ ts 'yyyy-mm-dd hh:mm:ss[.fractional seconds]' }

ODBC API 固有です。

  • 1 秒未満の秒を表す小数点の右側の桁数は、0 ~ 7 (100 ナノ秒) の範囲で指定できます。

  • SQL Server 2008 では、互換性レベルを 10 に設定した場合、リテラルが内部的に新しい time 型にマップされます。

ANSI および ISO 8601 への準拠

datetime2 の ANSI および ISO 8601 への準拠は、date 型および time 型と同じです。

次の例では、文字列をそれぞれの date および time データ型にキャストした結果を比較します。

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

以下に結果セットを示します。

データ型

出力

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15