MSDNによると:
データはデータベースに保存され、UTC と同様にサーバーで処理、比較、並べ替え、およびインデックスが作成されます。タイム ゾーン オフセットは、検索用にデータベースに保存されます。
あなたの例では、データは に変換できるバイナリ形式で保存されます14 Nov 2013 23:00 -5:00
。これは、ローカルの日付と時刻に UTC への -5 時間のオフセットを加えたものを意味します (これがカナダのオフセットであるとします)。
このタイプの値を保存するときは、自分でオフセットを指定する必要があります。システムは自動的にオフセットを行いません。
データは UTC 時間として保存されるため、データの比較や並べ替えなどが容易になり、いつでも元の時間オフセットを取得できます。
タイム ゾーン間で比較する必要があるイベントに関する情報を保存する場合は、通常、クライアントの現地時間をオフセットして保存する必要があります。
詳細についてdatetimeoffset
は、MSDNを参照してください。
例
テーブルを作成してデータを挿入する
create table dto (dto datetimeoffset(7))
insert into dto values (GETDATE()) -- inserts date and time with 0 offset
insert into dto values (SYSDATETIMEOFFSET()) -- current date time and offset
insert into dto values ('20131114 08:54:00 +10:00') -- manual way
データを選択すると、
2013-11-14 07:56:17.2300000 +00:00 -- current time, no offset so useless in this case
2013-11-14 07:56:17.2338125 +11:00 -- current time with my local offset (in Australia)
2013-11-14 08:54:00.0000000 +10:00 -- manually inserted data