datetimeoffset (Transact-SQL)
タイム ゾーンを認識する 24 時間形式の時刻と組み合わせた日付を定義します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。
datetimeoffset の説明
プロパティ |
値 |
---|---|
構文 |
datetimeoffset [ (fractional seconds precision) ] |
使用法 |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
既定の文字列リテラル形式 (下位クライアント用) |
YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 詳細については、「日時データの使用」の「下位クライアントの下位互換性」セクションを参照してください。 |
日付範囲 |
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)。 hh は、-14 ~ +14 までの 2 桁の数字です。 mm は、00 ~ 59 の 2 桁の数字です。 |
文字長 |
26 文字 (YYYY-MM-DD hh:mm:ss {+|-}hh:mm) 以上、34 文字 (YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm) 以下 |
有効桁数、小数点以下桁数 |
指定した小数点以下桁数結果 (有効桁数、小数点以下桁数)列長 (バイト単位)1 秒未満の秒の有効桁数
datetimeoffset (34,7)107
datetimeoffset(0) (26,0)80-2
datetimeoffset(1) (28,1)80-2
datetimeoffset(2) (29,2)80-2
datetimeoffset(3) (30,3)93-4
datetimeoffset(4) (31,4)93-4
datetimeoffset(5) (32,5)105-7
datetimeoffset(6) (33,6)105-7
datetimeoffset(7) (34,7)105-7
|
ストレージのサイズ |
既定では 10 バイト固定 (秒部分の既定の有効桁数は 100ns) です。 |
精度 |
100 ナノ秒 |
既定値 |
1900-01-01 00:00:00 00:00 |
カレンダー |
グレゴリオ暦 |
ユーザー定義の 1 秒未満の秒の有効桁数 |
可 |
タイム ゾーン オフセットへの対応と保持 |
可 |
夏時間への対応 |
不可 |
datetimeoffset でサポートされる文字列リテラル形式
次の表は、datetimeoffset でサポートされている ISO 8601 文字列リテラル形式を一覧にしたものです。datetimeoffset の日付部分と時刻部分に使用できるアルファベット、数値、区切りなし、時刻の各形式については、「date (Transact-SQL)」および「time (Transact-SQL)」を参照してください。
ISO 8601 |
説明 |
---|---|
YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm] |
この 2 つの形式は、セッションのロケール設定である SET LANGUAGE および SET DATEFORMAT の影響を受けません。datetimeoffset 部分と datetime 部分の間にスペースは使用できません。 |
YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC) |
ISO 定義に基づくこの形式は、datetime 部分を協定世界時 (UTC) で指定する必要があることを示します。たとえば、1999-12-12 12:30:30.12345 -07:00 は 1999-12-12 19:30:30.12345Z と表す必要があります。 |
タイム ゾーン オフセット
タイム ゾーン オフセットは、time 値または datetime 値の UTC を基準とした相対値を指定します。タイム ゾーン オフセットは、[+|-] hh:mm として表すことができます。
hh は、タイム ゾーン オフセットの時間数を表す 00 ~ 14 の 2 桁の数字です。
mm は、タイム ゾーン オフセットの付加的な分数を表す 00 ~ 59 の 2 桁の数字です。
タイム ゾーン オフセットでは、+ (正負号) または – (負符号) を必ず指定します。ローカル時刻を取得する際、UTC 時刻を基準としてタイム ゾーン オフセットを加算するか、減算するかを示します。タイム ゾーン オフセットの有効範囲は -14:00 ~ +14:00 までです。
タイム ゾーン オフセットの範囲は、XSD スキーマ定義の W3C XML 標準に準拠しており、SQL 2003 標準の定義 (12:59 ~ +14:00) とは若干異なります。
fractional seconds precision は、1 秒未満の桁数を指定するオプションのパラメータです。この値は、0 ~ 7 (100 ナノ秒) の整数で指定できます。fractional seconds precision の既定値は 100ns (1 秒未満の桁数は 7 桁) です。
データベースに格納されたデータは、サーバーで UTC として処理、比較、並べ替え、およびインデックス化されます。タイム ゾーン オフセットは、データベースに保持され、必要に応じて取得できます。
datetime が DST 期間に該当する場合、指定したタイム ゾーン オフセットは、夏時間 (DST) が認識されて調整されるものと見なされます。
datetimeoffset 型では、挿入、更新、算術演算、変換、代入などの操作時に、UTC とローカルの両方の datetime 値 (保持されたタイム ゾーン オフセットと変換後のタイム ゾーン オフセット) が検証されます。保持されたタイム ゾーン オフセットまたは変換後のタイム ゾーン オフセットに対して、無効な UTC またはローカル datetime 値が検出された場合は、無効な値であることを示すエラーが生成されます。たとえば、9999-12-31 10:10:00 は UTC では有効ですが、タイム ゾーン オフセットを +13:50 に設定したローカル時間ではオーバーフローします。
ANSI および ISO 8601 への準拠
「date」および「time」トピックの「ANSI および ISO 8601 への準拠」セクションに書かれている内容は、datetimeoffset にも当てはまります。
例
次の例では、文字列をそれぞれの 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'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS
'datetimeoffset IS08601';
以下に結果セットを示します。
データ型 |
出力 |
---|---|
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 |