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 固有です。
|
例
次の例では、文字列をそれぞれの 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 |