datetimeoffset (Transact-sql)
Saat dilimi bilinci ve 24 saatlik temel bir gün bir zaman ile birlikte tarihi tanımlar.
datetimeoffset açıklaması
Özellik |
Değer |
---|---|
Sözdizimi |
datetimeoffset [ (fractional seconds precision) ] |
Kullanım |
declare @ MyDatetimeoffsetdatetimeoffset(7) create table Table1 (Sütun1 datetimeoffset(7)) |
Varsayılan dize hazır bilgi biçimleri (alt düzey istemci kullanılır) |
yyyy-AA-GG: SS [. nnnnnnn] [{+ |-} ss: DD] Daha fazla bilgi için bkz: alt düzey istemciler için "geriye dönük uyumluluğu" izleyen bölümde. |
Tarih aralığı |
0001-01-01 ile 9999-12-31 arası Ocak 1,1 a.d. Aralık 31, 9999 m.s. |
Saat aralığı |
00:00:00 ile 23:59:59.9999999 arası |
Saat dilimi uzaklığı aralığı |
-14: 00'dan + 14: 00 |
Öğe aralıkları |
yyyy 0001 bir yıl temsil 9999 arasında değişen dört basamağıdır. MM, 01 ile 12 arasında değişen, belirtilen yılın bir ayını temsil eden iki rakamdır. DD, aya bağlı olarak 01 ile 31 arasında değişen, belirtilen ayın bir gününü temsil eden iki rakamdır. hh, 00 ile 23 arasında değişen, saati temsil eden iki rakamdır. mm, 00 ile 59 arasında değişen, dakikayı temsil eden iki rakamdır. ss, 00 ile 59 arasında değişen, saniyeyi temsil eden iki rakamdır. n * Kesirli saniye temsil 9999999 için 0 arasında değişen yedi basamak sıfırdır. hh-14 + 14 için aralığı iki basamaktan oluşur. mm 00 59 aralığını iki basamaktan oluşur. |
Karakter uzunluğu |
26 pozisyonları en az (yyyy-AA-GG: SS {+ |-} SS: DD) için en fazla 34 (yyyy-AA-GG SS. nnnnnnn {+ |-} SS: DD) |
Duyarlık, ölçek |
Belirtilen ölçekSonuç (duyarlık, ölçek)Sütun uzunluğu (bayt)Kesirli saniye duyarlık
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
|
Depolama boyutu |
Sabit 10 bayt ile 100ns kesirli ikinci duyarlık varsayılan varsayılandır. |
Kesinlik |
100 nanosaniye şeklindedir |
Varsayılan değer |
1900-01-01 00:00:00 00:00 |
Calendar |
Gregoryen |
Kullanıcı tanımlı kesirli saniye kesinliği |
Evet |
Saat dilimi uzaklığı uyumluluğu ve koruması |
Evet |
Yaz saati uygulaması uyumluluğu |
Hayır |
Desteklenen dize Literal biçimleri datetimeoffset için
Aşağıdaki tabloda desteklenen ISO 8601 dize hazır bilgi biçimleri için datetimeoffset. Tarih ve saati bölümleri alfabetik, sayısal, unseparated ve zaman biçimleri hakkında bilgi için datetimeoffsetbakın tarihi (Transact-sql)ve Saat (Transact-sql).
ISO 8601 |
Açıklama |
---|---|
yyyy-mm-ddThh [. nnnnnnn] [{+ |-} ss: DD] |
Bu iki biçim, set language ve set dateformat oturum yerel ayarlar tarafından etkilenmez. Alanlarda arasında izin verilir datetimeoffsetve datetimeparçalar. |
yyyy-mm-ddThh [. nnnnnnn] z (utc) |
Bu biçim tarafından ISO tanımı gösterir datetimebölümü Eşgüdümlü Evrensel Saat (utc) ifade. Örneğin 1999-12-12 12:30:30.12345-07: 00 1999-12-12 19:30:30.12345Z temsil. |
Saat Dilimi Uzaklığı
Bölge ofset için utc Saat dilimi uzaklığı belirtir bir timeya datetimedeğer. Saat dilimi uzaklığı olarak temsil edilebilir [+ |-] SS: dd:
HH Saat Saat dilimi uzaklığı temsil ve 14 00 aralığı iki basamaktan oluşur.
Ek saat dilimi uzaklığı dakika sayısını temsil eden 59 için 00 arasında değişen iki basamak, AA olur.
+ (artı) veya -(eksi) ise bir saat dilimi uzaklığı zorunlu işareti. Bu saat dilimi uzaklığı eklendi veya Yerel Saat edinmek için utc zaman düşülen olup olmadığını gösterir. Geçerli saat dilimi uzaklığı -14 aralığı: + 14 00: 00.
Saat dilimi mahsup aralığı xsd şema tanımı W3C xml standardına izler ve sql 2003 standart tanımı, 12: 59 + 14 için biraz farklıdır: 00.
İsteğe bağlı tür parametresi fractional seconds precisionsaniyeyi kesirli kısmı için basamak sayısını belirtir. Bu değer 0 ile 7 (100 nanosaniye şeklindedir) bir tamsayı olabilir. Varsayılan fractional seconds precision100ns olduğunu (saniyeyi kesirli bölümü için yedi basamaklı).
Verileri veritabanında depolanan ve işlenen karşılaştırıldığında, sıralama ve utc olarak Server dizin. Saat dilimi uzaklığı, alma için veritabanında korunur.
Verilen saat dilimi uzaklığı gün ışığından yararlanma saati (dst) farkında ve ayarlanmış herhangi verilen olarak kabul datetimeyani dst dönem.
İçin datetimeoffsetyazın, utc ve yerel (için kalıcı veya dönüştürülmüş Saat dilimi uzaklığı) datetimedeğeri doğrulanmış INSERT, update, aritmetik, dönüştürme veya atama işlemleri sırasında. Algılanmasını geçersiz utc veya yerel (için kalıcı veya dönüştürülmüş Saat dilimi uzaklığı) datetimedeğeri geçersiz değer hata yükseltmek. Örneğin, 9999-12-31 10: 10: 00 utc, ama + 13 saat dilimi uzaklığı yerel saate taşması geçerli: 50.
ANSI ve ISO 8601 Uyumluluğu
ANSI ve ISO 8601 uygunluk bölümlerinde tarihi ve zaman konular uygulamak için datetimeoffset.
Aşağı düzey istemciler için geriye dönük uyumluluk
Bazı alt düzey istemci desteği time, date, datetime2ve datetimeoffset veri türlerini. Aşağıdaki tablo arasındaki üst düzey bir örneğini türü eşleme gösterir SQL Serverve aşağı düzey istemciler.
SQL Server 2012veri türü |
Alt düzey istemci için varsayılan dize hazır bilgi biçimi geçti |
Alt düzey odbc |
Alt düzey oledb |
Alt düzey odbc |
Alt düzey SQLCLIENT |
---|---|---|---|---|---|
time |
: dd: SS [. nnnnnnn] |
sql_wvarchar veya sql_varchar |
DBTYPE_WSTRor dbtype_str |
Java.SQL.String |
Dize veya SqString |
date |
YYYY-AA-GG |
sql_wvarchar veya sql_varchar |
DBTYPE_WSTRor dbtype_str |
Java.SQL.String |
Dize veya SqString |
datetime2 |
yyyy-AA-GG: SS [. nnnnnnn] |
sql_wvarchar veya sql_varchar |
DBTYPE_WSTRor dbtype_str |
Java.SQL.String |
Dize veya SqString |
datetimeoffset |
yyyy-AA-GG: SS [. nnnnnnn] [+ |-] SS: dd |
sql_wvarchar veya sql_varchar |
DBTYPE_WSTRor dbtype_str |
Java.SQL.String |
Dize veya SqString |
Tarih ve Saat Verilerini Dönüştürme
Tarih ve Saat veri türleri için dönüştürdüğünüzde SQL Servercant tanımak Tarih veya saat olarak tüm değerleri reddeder. Tarih ve Saat veri ile cast ve convert işlevlerini kullanma hakkında daha fazla bilgi için bkz.CAST ve CONVERT (Transact-SQL)
Datetimeoffset veri türü diğer Tarih ve saat türleri için dönüştürme
Aşağıdaki tabloda ne olacağı açıklanır ne zaman bir datetimeoffsetveri türü diğer Tarih ve Saat veri türleri dönüştürülür.
Değerin dönüştürüleceği veri türü |
Dönüştürme ayrıntıları |
---|---|
date |
Yıl, ay ve gün kopyalanır. Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetimeoffset(4)değeri bir datedeğer.
|
time(n) |
Saat, dakika, saniye ve Kesirli saniye kopyalanır. Saat dilimi değerini kesilir. Ne zaman duyarlığını datetimeoffset(n)değeri duyarlılığı büyük time(n)değeri kesildi. Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetimeoffset(4)değeri bir time(3)değer.
|
datetime |
Tarih ve saat değerleri kopyalanır ve saat dilimini kesilir. Ne zaman kesirli duyarlığını datetimeoffset(n)değeri üç basamak büyük, değer kesilir. Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetimeoffset(4)değeri bir datetimedeğer.
|
smalldatetime |
Tarih, Saat ve dakika kopyalanır. Saniye, 0 olarak ayarlanır. Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetimeoffset(3)değeri bir smalldatetimedeğer.
|
datetime2(n) |
Tarih ve Saat kopyalanır ve datetime2değer ve saat dilimi kesilmiş. Ne zaman duyarlığını datetime2(n)değeri duyarlılığı büyük datetimeoffset(n)değeri Kesirli saniye sığacak şekilde kesilir. Izleyin kod dönüştürme sonuçlarını gösterir bir datetimeoffset(4)değeri bir datetime2(3)değer.
|
Dize hazır bilgi için datetimeoffset dönüştürme
Eğer tüm parçaları dizeleri geçerli biçimlerde dönüşümleri dize hazır bilgi Tarih ve saat türleri için izin verilir. Aksi takdirde, bir çalışma zamanı hatası ortaya çıkar. Örtülü Dönüştürmelere veya bir stil, dize hazır bilgi Tarih ve saat türleri belirtmeyen açık dönüştürmeleri geçerli oturumu varsayılan biçiminde olacaktır. Aşağıdaki tablo bir dize dönüştürme kuralları için hazır gösterir datetimeoffsetveri türü.
Giriş dize hazır bilgi |
datetimeoffset(n) |
---|---|
ODBC TARİH |
odbc dize hazır bilgi için eşleştirilir datetimeveri türü. odbc DATETIME rakamları herhangi bir atama işlemi datetimeoffsettürleri arasında bir örtük dönüştürme neden olur datetimeve bu tür dönüştürme kuralları tarafından tanımlanan. |
ODBC ZAMAN |
Bakın önceki odbc tarih kuralı. |
ODBC DATETIME |
Bakın önceki odbc tarih kuralı. |
Yalnızca Tarih |
00: 00: 00 Arası saat bölümünü öntanımlıdır. DİLİMİMİ varsayılanlarına + 00: 00. |
Yalnızca Tarih |
Tarih Bölümü varsayılan olarak 1900-1-1. TIMEZONE varsayılan + 00: 00. |
Sadece DİLİMİMİ |
Varsayılan değerler sağlanır |
TARİH + SAAT |
DİLİMİMİ varsayılanlarına + 00: 00. |
TARİHİ + TIMEZONE |
İzin verilmiyor |
TIMEZONE_TIME |
Tarih Bölümü varsayılan olarak 1900-1-1. |
TARİH + SAAT + TIMEZONE |
Önemsiz |
Örnekler
Aşağıdaki örnek, her bir dize vuran sonuçlarını karşılaştırır dateve timeveri türü.
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';
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';
Sonuç kümesi buradadır.
Veri türü |
Çıktı |
---|---|
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 |