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.

DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10 +01:0;
DECLARE @date date= @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @date AS 'date';
--Result
--@datetimeoffset                date
-------------------------------- ----------
--2025-12-10 12:32:10.0000 +01:0 2025-12-10
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10 +01:0;
DECLARE @date date= @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @date AS 'date';
--Result
--@datetimeoffset                date
-------------------------------- ----------
--2025-12-10 12:32:10.0000 +01:0 2025-12-10
--
--(1 row(s) affected)

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.

DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10.1234 +01:0';
DECLARE @time time(3) = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @time AS 'time';
--Result
--@datetimeoffset                time
-------------------------------- ------------
--2025-12-10 12:32:10.1234 +01:0 12:32:10.123
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10.1234 +01:0';
DECLARE @time time(3) = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @time AS 'time';
--Result
--@datetimeoffset                time
-------------------------------- ------------
--2025-12-10 12:32:10.1234 +01:0 12:32:10.123
--
--(1 row(s) affected)

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.

DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10.1234 +01:0';
DECLARE @datetime datetime = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @datetime AS 'datetime';
--Result
--@datetimeoffset                datetime
-------------------------------- -----------------------
--2025-12-10 12:32:10.1234 +01:0 2025-12-10 12:32:10.123
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(4) = '12-10-25 12:32:10.1234 +01:0';
DECLARE @datetime datetime = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset ', @datetime AS 'datetime';
--Result
--@datetimeoffset                datetime
-------------------------------- -----------------------
--2025-12-10 12:32:10.1234 +01:0 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

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.

DECLARE @datetimeoffset datetimeoffset(3) = '1912-10-25 12:24:32 +10:0';
DECLARE @smalldatetime smalldatetime = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset', @smalldatetime AS '@smalldatetime';
--Result
--@datetimeoffset                @smalldatetime
-------------------------------- -----------------------
--1912-10-25 12:24:32.000 +10:00 1912-10-25 12:25:00
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(3) = '1912-10-25 12:24:32 +10:0';
DECLARE @smalldatetime smalldatetime = @datetimeoffset;
SELECT @datetimeoffset AS '@datetimeoffset', @smalldatetime AS '@smalldatetime';
--Result
--@datetimeoffset                @smalldatetime
-------------------------------- -----------------------
--1912-10-25 12:24:32.000 +10:00 1912-10-25 12:25:00
--
--(1 row(s) affected)

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.

DECLARE @datetimeoffset datetimeoffset(4) = '1912-10-25 12:24:32.1234 +10:0';
DECLARE @datetime2 datetime2(3= @datetimeoffset);
SELECT @datetimeoffset AS '@datetimeoffset', @datetime2 AS '@datetime2';
--Result
--@datetimeoffset                @datetime2
-------------------------------- -----------------------
--1912-10-25 12:24:32.1234 +10:0 1912-10-25 12:24:32.123
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(4) = '1912-10-25 12:24:32.1234 +10:0';
DECLARE @datetime2 datetime2(3= @datetimeoffset);
SELECT @datetimeoffset AS '@datetimeoffset', @datetime2 AS '@datetime2';
--Result
--@datetimeoffset                @datetime2
-------------------------------- -----------------------
--1912-10-25 12:24:32.1234 +10:0 1912-10-25 12:24:32.123
--
--(1 row(s) affected)

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

Ayrıca bkz.

Başvuru

CAST ve CONVERT (Transact-SQL)