Aracılığıyla paylaş


Tarih ve saat veri kullanma

Aşağıdaki bölümlerde bu konu, tarih ve saat veri türleri ve işlevleri kullanma hakkında bilgi ve örnekler sağlar.Tüm bir genel bakışTransact-SQLtarih ve saat veri türleri ve işlevleri, bkz:Tarih ve saat veri türleri ve işlevler (Transact-SQL).

  • Tarih ve saat veri türleri ile işleçleri kullanma

  • Tarih ve saat biçimleri kullanma

  • Sabit metin, tarih ve saat biçimleri dize

  • Unseparated dize biçimi

  • ISO 8601 biçimi

  • Alfabetik tarih biçimleri

  • Sayısal tarih biçimleri

  • Saat biçimleri

  • ODBC tarih-saat biçimi

  • Tarih, saat, datetime2 ve datetimeoffset dönüştürme

  • Dize rakamları arasında dönüştürme ve saat(n), tarih, datetime2(n) ve datetimeoffset(n)

  • Tarih ve saat veri türleri arasında dönüştürme

  • CAST kullanarak ve saat, tarih, datetime2 ve datetimeoffset Çevir

  • CONVERT Functionq için stil bağımsız değişkenleri

  • SQL Server tarih ve saat kısıtlamaları

  • Geriye dönük uyumluluk için kapalı-düzey istemciler

  • Örnekler

Tarih ve saat veri türleri ile işleçleri kullanma

The relational operators (<,<=,>,>=,<>), comparison operators (=,<,<=,>,>=,<>, !<, !>) ve Boole işleçleri ve Boole koşullarına (IS NULL, IS NOT NULL, ın, EXISTS arasında NOT EXISTS LIKE) desteklenen tüm tarih ve saat veri türü.

Tarih ve saat aritmetik işleçleri

Ekleme ve çıkarmak tüm tarih ve saat veri türleri, kullanım içinDATEADD and DATEDIFF.

Tarih ve saat biçimleri kullanma

Dize hazır bilgi biçim kullanıcıların ancak değil temel tamsayı depolama biçiminde uygulamalarda verilerin sunumunu etkilerSQL Server.Bununla birlikte,SQL Server, bir tarih değeri değişmez bir dize biçiminde yorumlar giriş uygulama ya da kullanıcıyı depolamak için veya bir tarih işlev, farklı tarihler.Harflerden oluşan dize biçimi, veri türü ve çalışma zamanı yorumunu bağlıdırküme DATEFORMATLANGUAGE küme , varsayılan dil seçeneği ayarlarını

Bazı dize hazır bilgi biçimleri bu ayarlardan etkilenmez.Ayarları biçimi doğru olduğundan emin değilseniz, bu ayarları, bağımlı bir biçimde kullanmayı düşünün.The ISO 8601 format does not depend on these settings and is an international standard.Transact-SQL that uses string literal formats, dependent on system settings, is less portable.

Alt düzey istemciler için varsayılan dize hazır bilgi biçimi dışında bulmak için her tarih ve saat veri türü için konusuna bakın.Tüm bir genel bakışTransact-SQLtarih ve saat veri türleri ve işlevleri, bkz:Tarih ve saat veri türleri ve işlevler (Transact-SQL).

The ydm date format is not supported for the date, datetime2 and datetimeoffset types.Bir saat hata oluşturulur.

Sabit metin, tarih ve saat biçimleri dize

Aşağıdaki tablo listeleri farklı tarih ve saat biçimleri dize.DATEFORMAT bağımlı olan ve birden çok dil tarih ve saat biçimleri kullanmanızı öneririz.ISO 8601 biçimleri, '1998 - 02 - 23T14:23:05' ve ' 1998 - 02 - 23T14:23:05 - 08: 00 ' olan uluslararası bir standart olan yalnızca biçimleri.DATEFORMAT veya varsayılan oturum açma dil bağımlı olmayan ve birden çok dil.

-Tarih bölümü

Biçim türü

Biçim örneği

Diğer biçimler ile bir araya getirebilirsiniz

Bağımlı DATEFORMAT

Çok dilli

Tarih

Un-separated

ISO 8601

'19980223'

Evet

Hayır

Evet

Tarih

Sayısal

'02/23/1998'

Evet

EVET

Hayır

(DATEFORMAT)

Tarih

ISO 8601 sayısal

'1998-02-23'

Evet

Hayır

Hayır

Tarih

Alfabetik

' 23 Şubat 1998 '

Evet

Hayır

Hayır

(ay ya da kısa ay)

Tarih

ODBC tarih

{d ' 1998 - 02 - 23 '}

Hayır

Hayır

Evet

Time

ISO 8601 saat

'14:23:05'

'10:00:00.123456'

Evet

Hayır

Evet

Time

ODBC saat

{t ' 14: 23: 05 '}

Hayır

Hayır

Evet

Tarih-saat

ODBC tarih-saat

{ts ' 1998 - 02 - 23 14: 23: 05 '}

Hayır

Hayır

Evet

Tarih-saat

ISO 8601

'1998 - 02 - 23T14:23:05'

' 1998 - 02 - 23T14:23:05-08: 00 '

Hayır

Hayır

Evetdate,datetime2,datetimeoffset.

Tarih-saat

ANSI SQL standart

'1998-02-23 14:23:05'

'1998-02-23 14:23:05 -08:00'

Hayır

No (datetime2,datetimeoffset)

Yes (datetime)

Evetdate,datetime2,datetimeoffset.

Tarih-saat

Tarih ve saat

'19980223 14:23:05'

' 02/23/1998 14: 23: 05 '

'1998-02-23 10:00:00.123'

' 23 Şubat 1998 14: 23: 05 '

Hayır

Evet

(tarih bölümü)

Hayır

TimeZone

Saat biçimi

'+12:00'

'01:00'

'-08:00'

'Z'

Evet

Hayır

Evet

Aþaðýdaki ifadeleri küme LANGUAGE ve küme DATEFORMAT ayarlarının etkilerini gösterir.

Unseparated dize biçimi

Tarih verisi unseparated bir dize belirtebilirsiniz.Tarih verisi, dört, altı, sekiz basamağı, boş bir dize veya tarih değeri olmadan saat değeri kullanılarak belirtilebilir.

küme DATEFORMAT oturum ayarı ayırıcılar olmayan sayısal girdileri gibi sayısal tüm tarih girişleriyle geçerli değildir.Basamak altı veya sekiz basamaklı dizeler olarak her zaman olarak yorumlanırymd.Her zaman ayı ve günü iki basamaklı bir sayı olmalıdır.

Geçerli un-separated dize biçimi budur: [19]960415

Bir dize yalnızca dört basamaklı yıl olarak yorumlanır.Ay ve tarih 1 Ocak olarak küme.Yalnızca dört basamaklı belirttiğinizde, yüzyılı eklemeniz gerekir.

ISO 8601 biçimi

ISO 8601 tarih ile saat biçimi aşağıdaki gibidir:

  • YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]

  • YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC, Coordinated Universal Time)

The T indicates the start of the time part of the date-time value.

ISO 8601 biçiminde kullanmak için her öğenin aşağıdaki biçimde belirtmeniz gerekir.BuT, iki nokta üst üste (:), + veya - ve nokta (.).Kesirli saniye belirtmek köşeli ayraçlar veya saat dilimi mahsup bileşeni isteğe bağlıdır.

24 Saatlik biçimde saat bileşeni belirtildi.

ISO 8601 biçiminde kullanmanın avantajı, uluslararası bir standart olmasıdır.Bu biçimi kullanarak belirtilen tarih ve saat belirli değerlerdir.Bu biçim, küme DATEFORMAT, oturum açma varsayılan dil ayarlarını küme LANGUAGE etkilenmez.

ISO 8601 biçiminde belirtilen tarih ve saat değerlerini iki örnek aşağıda verilmiştir:

  • 2004 - 05 - 23T14:25:10

  • 2004 - 05 - 23T14:25:10.1234567 + 07: 00

Alfabetik tarih biçimleri

Bir ay gibi bir ad belirtebilirsinizNisan veya , İngilizce. Nis kısaltma Bu belirtilen oturumunun dil ayarınaavril or avr in French.Virgül isteğe bağlıdır ve büyük/küçük harf göz ardı edilir.

Alfabetik tarih biçimlerini kullanmak için bazı yönergeler verilmiştir:

  • Tarih ve saat veri tek tırnak işareti (') içine alın.

  • Yalnızca yılın son iki basamağını belirtirseniz, son iki basamağını değerinin az değerleriiki basamaklı yıl kesme yapılandırma seçeneği kesme yıl. aynı yüzyıl içinde bulunduğunuz Bu seçeneğin değeri ya da daha büyük olan değerler kesme yıl önce gelen yüzyıl arasındadır.Örneğin,iki basamaklı yıl kesme 2050 (varsayılan); 25 2025 değerlendirilir; 50 1950 yorumlanır.Belirsizlik önlemek için dört basamaklı yıl kullanın.

  • Ayın ilk günü yoksa sağlanır.

  • Ay alfabetik formunda belirttiğiniz zaman küme DATEFORMAT oturum ayarı uygulanmaz.

  • Aşağıdaki biçimler olan geçerli alfabetik biçimleriSQL Servertarih.Köşeli ayraç içine alınmış karakter isteğe bağlıdır.

  • Nisan 1996 [il] [15] []

  • Nisan 15 [,] [il] [19] 96

  • Nisan 1996 [15] [il]

  • [15] Nisan [il] [,] 1996

  • 15 Nisan [il] [,] [19] 96

  • 15 [19] 96 Nis [il]

  • [15] 1996 Nis [il]

  • 1996 NİS [IL] [15]

  • [15] 1996 NİS [IL]

Sayısal tarih biçimleri

Tarih verisi içeren sayısal bir ayın belirtebilirsiniz.Örneğin, 20/5/97, May 1997 yirminci günü temsil eder.Bir sayısal tarih biçimi kullandığınızda, yıl, ay ve gün eğik çizgi işareti (/), bir dize belirtin tire (-) ve ayırıcı olarak nokta (.).Bu dize, aşağıdaki biçimde görünmesi gerekir:

number separator number separator number [time] [time]

Aşağıdaki sayısal biçimler geçerlidir:

  • [0] 4/15 / [19] 96--(mdy)

  • [0] 4 - 15-[19] 96--(mdy)

  • [0] 4.15. [19] 96--(mdy)

  • 4 [0] / [19] 96/15 – (myd)

  • 15 / [0] 4 / [19] 96--(dmy)

  • 15 / [19] 96 / [0] 4--(dym)

  • [19] 96/15 / [0] 4--(ydm)

  • 96 [19] / [0] 4/15 – (ymd)

Bir oturum için varsayılan dili DATEFORMAT, oturum açma, bir küme LANGUAGE deyim veya bir küme DATEFORMAT deyim için varsayılan dil olarak ayarlanmıştır.Zaman dili ayarlamakus_english varsayılan oturum açma ya da küme LANGUAGE deyim, tarih için varsayılan sıralama düzeni olan mdy.

küme DATEFORMAT deyim kullanarak tarih sırasını değiştirebilirsiniz.küme DATEFORMAT ayarı, tarih değerlerini yorumlama şeklini belirler.Sipariş ayarlar eşleşmezse, değerleri tarih olarak aralığının dışında olmaları veya değerleri misinterpreted yorumlanır değil.Örneğin, 12/10/08 altı tarihleri DATEFORMAT ayarına bağlı olarak yorumlanabilir.Dört basamaklı yıl olarak yorumlanacaktır.

Saat biçimleri

SQL Server Aşağıdaki biçimler için saat tanır.Her biçimin tek tırnak işareti (') içine alın.

  • 14:30

  • 14:30[:20:999]

  • 14:30[:20.9]

  • 4 am

  • 16

  • [:30:20:500] [0] 4 AM

Aþaðýdaki ifadeleri göster dönüş değerlerini, farklı girişlerinin CAST işlev.

AM veya PM 12 öğleden önce veya saat değeri olup olmadığını gösteren bir son belirtebilirsiniz.AM veya PM durum göz ardı edilir.

Saat 12 saatlik veya 24 saatlik saat kullanılarak belirtilebilir.Saat değerleri şu şekilde yorumlanır.

  • 00 Saat değerini (de), gece yarısından sonra saat de belirttiğiniz bağımsız olup olmadığını gösterir.PM, saat 00 eşittir belirtemezsiniz.

  • AM veya PM ne belirtilmezse öğleden önce saat 01-11 saat değerleri gösterir.Aynı zamanda temsil ettikleri saat öğleden önce [NULL]'de belirtilir.PM belirtilirse, öğleden sonraki saatler temsil eder.

  • 12 Saat değerinin ne AM veya PM belirtilmezse sırasında öğlen başlayan saati temsil eder.[NULL]'de belirtilen, gece yarısı başlayan saati gösterir.PM belirtilirse, öğlen başladığı saati temsil eder.Örnek: 12: 01'de 1 dakika sonra gece yarısı. iken 12: 01 PM olarak 12: 01, öğleden sonra 1 dakika olur. 12: 01'de belirten 00: 01 veya 00: 01'de aynıdır.

  • 13-23 Saat değerleri, AM veya PM belirtilmezse, öğleden sonraki saatler gösterir.Bunlar, PM belirtilen öğleden sonra saat gösterir.Saat değeri 13-23 arasında olduğunda de belirtemezsiniz.

  • Bir 24 saat değeri geçerli değil; 12: 00'de veya 00: 00 gece göstermek için kullanın.

Milisaniye cinsinden önünde ya da üste (:) veya nokta (.).Üste öncesinde, ikinci, thousandths sayı demektir.Önünde bir nokta, ikinci, onda bir tek rakam anlamına gelir, iki basamaklı saniye, salise anlamına gelir ve üç basamaklı saniye, thousandths anlamına gelir.Örneğin, yirmi ve tek - 214.748,3648 saniye 12:30:20:1 gösteren 12: 30; 12:30:20.1 yirmi ve tek - onuncu saniyeleri gösterir geçen 12: 30.

ODBC tarih-saat biçimi

ODBC API ODBC zaman damgası veri çağrıları tarih ve saat değerlerini temsil etmek için çıkış sıralarını tanımlar.Bu ODBC zaman damgası biçimi OLE DB dil tanımını (DBGUID-SQL) tarafından da desteklenir veMicrosoftOLE DB sağlayıcı içinSQL Server.ADO, OLE DB ve ODBC tabanlı API'leri kullanan uygulamalar bu ODBC zaman damgası biçimi, tarih ve saati göstermek için kullanabilirsiniz.

SQL Serverolacak şekilde, ODBC veri her zaman işlerdatetimeveri türü.

Biçimi, ODBC zaman damgası kaçış sıraları şunlardır:

{ literal_type 'constant_value' }

  • literal_type
    Çıkış sırası türünü belirtir.Aşağıda geçerli bağımsız değişkenleriliteral_type.

    d = tarih yalnızca

    t = saat yalnızca

    ts saat damgası (saat + tarih) =

  • 'constant_value'
    Is the value of the escape sequence.constant_value must follow these formats for each literal_type.

    literal_type

    constant_value biçimi

    d

    YYYY-AA-GG

    t

    hh:mm:ss[.fff]

    TS

    YYYY-AA-GGhh:mm:ss[.fff]

TExamples, ODBC tarih ve sabitler aşağıdaki gibidir:

  • {ts' 1998-05-02 01:23:56.123 '}

  • { d '1990-10-02' }

  • { t '13:33:41' }

Do not confuse the ODBC and OLE DB timestamp data type name with the Transact-SQLtimestamp data type name.ODBC ve OLE DB zaman damgası veri kayıtları tarih ve saati yazın.The Transact-SQLtimestamp data type is a binary data type that has no time-related values.

Tarih, saat, datetime2 ve datetimeoffset dönüştürme

İki farklı tarih türleri arasındaki dönüştürme türü vardır: açık ve kapalı. Örtük dönüştürmeler, CAST ya da Çevir işlevleri kullanmadan oluşur.Açık dönüştürme CAST ya da Çevir işlevlerini gerektirir.

Dize rakamları arasında dönüştürme ve saat(n), tarih, datetime2(n) ve datetimeoffset(n)

Tüm parçaları dizeler geçerli biçimleri, tarih ve saat türleri için dönüştürme dize hazır gelen izin verilir.Aksi takdirde çalışma zamanı hatası oluşur.

Örtük dönüştürmeler ya da dize hazır bilgi tarih ve saat türleri'nden bir stil, belirttiğiniz açık dönüştürme geçerli oturum varsayılan biçiminde olacaktır.

Örtük dönüştürme tarih, saat, datetime2 ve datetimeoffset veri türleri karakter dizeleri, SQL standart biçim YYY-aa-gg hh:mi:ss. [nnnnnnn] 121 stili Çevir, uygulanacak.CONVERT stil 0 biçimini, ay gg yyyy hh:miAM (veya PM), tarih ve smalldatetime veri türleri için uygulanır.

Aşağıdaki tablo arasında dönüştürme kurallarını gösterirdate,time,datetime2vedatetimeoffsettipleri ve dize hazır bilgi.

Giriş dize

date

time(n)

datetime2(n)

datetimeoffset(n)

ODBC tarih

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

ODBC saat

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

ODBC TARİH/SAAT

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

Not 1 bakın.

Yalnızca tarih

Önemsiz

Varsayılan değerler sağlanır

00: 00: 00 Saat bölümünü varsayılan.

00: 00: 00 Saat bölümünü varsayılan.Varsayılan saat + 00: 00.

Yalnızca saat

Varsayılan değerler sağlanır

Önemsiz

tarih 1900-1-1 Varsayılan bölüm.

tarih 1900-1-1 Varsayılan bölüm.SAAT varsayılan + 00: 00.

Yalnızca saat

Varsayılan değerler sağlanır

Varsayılan değerler sağlanır

Varsayılan değerler sağlanır

Varsayılan değerler sağlanır

tarih + SÜRESİ

Giriş tarih bölümünü dize kullanılır.

SAAT bölümünü giriş dizesi kullanılır.

Önemsiz

Varsayılan saat + 00: 00.

tarih + SAAT

İzin verilmiyor.

İzin verilmiyor.

İzin verilmiyor.

İzin verilmiyor.

SÜRESİ + SAAT

Varsayılan değerler sağlanır

SAAT bölümünü giriş dizesi kullanılır.

tarih 1900-1-1 Varsayılan bölüm.SAAT giriş dikkate alınmaz.

tarih 1900-1-1 Varsayılan bölüm.

TARİH + SAAT + SAAT

Yerel DATETIME tarih bölümü kullanılır.

Yerel DATETIME, saat bölümünü kullanılır.

Yerel DATETIME kullanılır.

Önemsiz

Notları dönüştürme

  1. ODBC dize hazır bilgi eşleştirilirdatetimeveri türü.ODBC DATETIME hazır gelen herhangi bir atama işlemidate,time,datetime2, ordatetimeoffset türleri arasında bir kapalı dönüştürme neden olurdatetimeve bu tür olarak tanımlanmış dönüştürme kuralları.

  2. Kesirli saniye duyarlığınıdatetime, (eşdeğer 3.33 milisaniye veya 0.00333 saniye) ikinci bir üç yüzde bir hassasiyeti vardır.Değerleri küçük artışlarla.000,.003 ya da.007 saniye. '08/22/1995 10:15:19:999 'yuvarlamak için'. 999 ' duyarlılık aşıyor.

  3. İçintime(3),datetime2(3)ordatetimeoffset(3)kesirli saniye duyarlılığı olan doğruluğu, bir milisaniye.Bu nedenle, ' 1995 - 8 - 22 10:15:19:999 ' değilse yuvarlanır.

  4. SAAT giriş bölümü mahsup ss ve mm çift rakam olarak her zaman olmalıdır.İşareti, ya da + veya –, zorunludur.

Tarih ve saat veri türleri arasında dönüştürme

Aşağıdaki tarih ve saat veri türlerinin her biri diğer tarih ve saat veri türleri için nasıl dönüştürülür tabloda bu bölümde açıklanmaktadır:

  • date

  • time(n)

  • datetime

  • smalldatetime

  • datetimeoffset(n)

  • datetime2

Tarih veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birdateveri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

time(n)

Dönüştürme başarısız olur ve 206 hata iletisi oluşturulur: "İşlenenin tür çakışmasından: Tarih, saat uyumlu değil".

datetime

Tarih kopyalanır.Aşağıdaki kod gösterir sonuçlar dönüştürme birdateiçin değer birdatetimedeğer.

DECLARE @date date
DECLARE @datetime datetime
SELECT @date = '12-10-25'
SELECT @datetime = @date
SELECT @date AS '@date', @datetime AS '@datetime'
--Result
--@date      @datetime
------------ -----------------------
--2025-12-10 2025-12-10 00:00:00.000
--
--(1 row(s) affected)

smalldatetime

,datedeğer aralığında olan birsmalldatetime, tarih bileşeni kopyalanır ve saat bileşeni küme 00:00:00.000.,datedeğer aralık dışında olan birsmalldatetimedeğer, hata iletisi 242 oluşturuldu: "Smalldatetime veri türü tarih veri türü dönüştürme bir aralık dışı değer. sonuçlanan"; ve smalldatetimeDeğer küme null.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdateiçin değer birsmalldatetimedeğer.

DECLARE @date date
DECLARE @smalldatetime smalldatetime
SELECT @date = '1912-10-25'
SELECT @smalldatetime = @date
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime'
--Result
--@date      @smalldatetime
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00
--
--(1 row(s) affected)

datetimeoffset(n)

Tarih kopyalanır ve saat 00:00.0000000 + 00: 00'e küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdateiçin değer birdatetimeoffset(3)değer.

DECLARE @date date
DECLARE @datetimeoffset datetimeoffset(3)
SELECT @date = '1912-10-25'
SELECT @datetimeoffset = @date
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset'
--Result
--@date      @datetimeoffset
------------ ------------------------------
--1912-10-25 1912-10-25 00:00:00.000 +00:00
--
--(1 row(s) affected)

datetime2(n)

Tarih bileşeni kopyalanır ve saat bileşeni 00:00.000000. olarak küme

Aşağıdaki kod gösterir sonuçlar dönüştürme birdateiçin değer birdatetime2(3)değer.

DECLARE @date date
DECLARE @datetime2 datetime2(3)
SELECT @date = '1912-10-25'
SELECT @datetime2 = @date
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)'
--Result
--@date      @datetime2(3)
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00.000
--
--(1 row(s) affected)

saat(n) veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birtimeveri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

time(n)

Saat, dakika ve saniye kopyalanır.Hedef duyarlılık kaynak duyarlılığı daha az olduğunda, kesirli saniye için kesilecek uyma hedef duyarlılık.

Aşağıdaki örnekte gösterildiği sonuçlar dönüştürme birtime(4)için değer birtime(3)değer.

DECLARE @timeTo time(3)
DECLARE @timeFrom time(4)
SELECT @timeFrom = '12:34:54.1234'
SELECT @timeTo = @TimeFrom
SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)'
--Results
--time(3)      time(4)
-------------- -------------
--12:34:54.123 12:34:54.1234
--
--(1 row(s) affected)

date

Dönüştürme başarısız olur ve 206 hata iletisi oluşturulur: "İşlenenin tür çakışmasından: Tarih, saat uyumlu değil".

datetime

Saat, dakika ve ikinci değerler kopyalanır; ve ' 1900 - 01 - tarih bileşeni küme 01 '., Kesirli saniye duyarlığınıtime(n)üç basamak büyük değerdatetimesonucu kesildi.

Aşağıdaki kod gösterir sonuçlar dönüştürme birtime(4)için değer birdatetimedeğer.

DECLARE @time time(4)
DECLARE @datetime datetime
SELECT @time = '12:15:04.1234'
SELECT @datetime = @time
SELECT @time AS '@time', @datetime AS '@datetime'
--Result
--@time         @datetime
--------------- -----------------------
--12:15:04.1234 1900-01-01 12:15:04.123
--
--(1 row(s) affected)

smalldatetime

Tarih ' 1900 - 01 - küme 01 ' ve saat ve dakika değerleri kopyalanır.Kesirli saniye ve saniye, 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birtime(4)için değer birsmalldatetimedeğer.

DECLARE @time time(4)
DECLARE @smalldatetime smalldatetime
SELECT @time = '12:15:04.1234'
SELECT @smalldatetime = @time
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime'
--Result
--@time         @smalldatetime
--------------- -----------------------
--12:15:04.1234 1900-01-01 12:15:00
--
--(1 row(s) affected)

datetimeoffset(n)

Tarih ' 1900 - 01 - küme 01 ' ve saat kopyalanır.Saat dilimi uzaklığı ayarlamak + 00: 00., Kesirli saniye duyarlığınıtime(n)duyarlığını büyük değerdatetimeoffset(n)değeri kesildi uyma.

Aşağıdaki örnek, dönüştürmenin sonuçlarını gösterir birtime(4)için değer birdatetimeoffset(3)yazın.

DECLARE @time time(4)
DECLARE @datetimeoffset datetimeoffset(3)
SELECT @time = '12:15:04.1234'
SELECT @datetimeoffset = @time
SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset'
--Result
--@time         @datetimeoffset
--------------- ------------------------------
--12:15:04.1234 1900-01-01 12:15:04.123 +00:00
--
--(1 row(s) affected)

datetime2(n)

Tarih ' 1900 - 01 - küme 01 ', saat bileşeni kopyalanır ve saat dilimi uzaklığı 00: 00 ile küme., Kesirli saniye duyarlığınıdatetime2(n)değeri büyüktürtime(n)değer, değer sığacak. kesilecek

Aşağıdaki örnekte gösterildiği sonuçlar dönüştürme birtime(4)için değer birdatetime2(2)değer.

DECLARE @time time(4)
DECLARE @datetime2 datetime2(3)
SELECT @time = '12:15:04.1234'
SELECT @datetime2 = @time
SELECT @datetime2 AS '@datetime2', @time AS '@time'
--Result
--@datetime2              @time
------------------------- -------------
--1900-01-01 12:15:04.123 12:15:04.1234
--
--(1 row(s) affected)

dateTime veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birdatetimeveri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

date

Yılın ayı ve günü kopyalanır.Saat bileşeni 00:00:00.000 için küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdateiçin değer birdatetimedeğer.

DECLARE @date date
DECLARE @datetime datetime
SELECT @date = '12-21-05'
SELECT @datetime = @date
SELECT @datetime AS '@datetime', @date AS '@date'
--Result
--@datetime               @date
------------------------- ----------
--2005-12-21 00:00:00.000 2005-12-21

time(n)

Saat bileşeni kopyalanır ve ' 1900 - 01 - tarih bileşeni küme 01 '., Kesirli duyarlığınıtime(n)üç sayıdan daha büyük değer, değer kesildi uyma.

Aşağıdaki örnekte gösterildiği sonuçlar dönüştürme birtime(4)için değer birdatetimedeğer.

DECLARE @time time(4)
DECLARE @datetime datetime
SELECT @time = '12:10:05.1234'
SELECT @datetime = @time
SELECT @datetime AS '@datetime', @time AS '@time'
--Result
--@datetime               @time
------------------------- -------------
--1900-01-01 12:10:05.123 12:10:05.1234
--
--(1 row(s) affected)

smalldatetime

Saat ve dakika kopyalanır.Kesirli saniye ve saniye, 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birdatetimedeğer.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime datetime
SELECT @smalldatetime = '12-01-01 12:32'
SELECT @datetime = @smalldatetime
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime'
--Result
--@datetime               @smalldatetime
------------------------- -----------------------
--2001-12-01 12:32:00.000 2001-12-01 12:32:00
--
--(1 row(s) affected)

datetimeoffset(n)

Tarih ve saat bileşeni kopyalanır.Saat dilimini atılır., Kesirli duyarlığınıdatetimeoffset(n)değeri üç basamak büyük olduğundan, değer kesilecek.

Aşağıdaki örnekte gösterildiği sonuçlar dönüştürme birdatetimeoffset(4)için değer birdatetimedeğer.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime datetime
SELECT @datetimeoffset = '1968-10-23 12:45:37.1234 +10:0'
SELECT @datetime = @datetimeoffset
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset'
--Result
--@datetime               @datetimeoffset
------------------------- ------------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1234 +01:0
--
--(1 row(s) affected)

datetime2(n)

Tarih ve saat kopyalanır., Kesirli duyarlığınıdatetime2(n)değeri üç basamak büyük olduğundan, değer kesilecek.

Aşağıdaki örnekte gösterildiği sonuçlar dönüştürme birdatetime2(4)için değer birdatetimedeğer.

DECLARE @datetime2 datetime2(4)
DECLARE @datetime datetime
SELECT @datetime2 = '1968-10-23 12:45:37.1237'
SELECT @datetime = @datetime2
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2'
--Result
--@datetime               @datetime2
------------------------- ------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
--
--(1 row(s) affected)

smalldatetime veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birsmalldatetimeveri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

date

Yıl, ay ve gün kopyalanır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birdatedeğer.

DECLARE @smalldatetime smalldatetime
DECLARE @date date
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date'
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

Saat, dakika ve saniye kopyalanır.Kesirli saniye, 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birtime(4)değer.

DECLARE @smalldatetime smalldatetime
DECLARE @time time(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @time = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time'
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

The smalldatetime value is copied to the datetime value.Kesirli saniye, 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birdatetimedeğer.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime datetime
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetime = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime'
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

The smalldatetime value is copied to the datetimeoffset(n) value.Kesirli saniye 0 olarak küme ve saat dilimi uzaklığı ayarlamak için + 00: 0.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birdatetimeoffset(4)değer.

DECLARE @smalldatetime smalldatetime
DECLARE @datetimeoffset datetimeoffset(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetimeoffset = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)'
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

The smalldatetime value is copied to the datetime2(n) value.Kesirli saniye, 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birsmalldatetimeiçin değer birdatetime2(4)değer.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime2 datetime2(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetime2 = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)'
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

datetimeoffset(n) veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birdatetimeoffset(n)veri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

date

Yıl, ay ve gün kopyalanır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetimeoffset(4)için değer birdatedeğer.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @date date
SELECT @datetimeoffset = '12-10-25 12:32:10 +01:0'
SELECT @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, ikinci ve kesirli saniye kopyalanır.Saat dilimi değerini atılır., Duyarlığınıdatetimeoffset(n)duyarlığını büyük değertime(n)değeri kesildi.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetimeoffset(4)için değer birtime(3)değer.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @time time(3)
SELECT @datetimeoffset = '12-10-25 12:32:10.1234 +01:0'
SELECT @time = @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., Kesirli duyarlığınıdatetimeoffset(n)değeri üç basamak büyük olduğundan, değer atılır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetimeoffset(4)için değer birdatetimedeğer.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime datetime
SELECT @datetimeoffset = '12-10-25 12:32:10.1234 +01:0'
SELECT @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.Saniyeleri 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetimeoffset(3)için değer birsmalldatetimedeğer.

DECLARE @datetimeoffset datetimeoffset(3)
DECLARE @smalldatetime smalldatetime
SELECT @datetimeoffset = '1912-10-25 12:24:32 +10:0'
SELECT @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 saati kopyalanırdatetime2değer ve saat dilimini kesildi., Duyarlığınıdatetime2(n)duyarlığını büyük değerdatetimeoffset(n)değeri sığdırma. kesirli saniye kesilir

İzleme kodu dönüştürmenin sonuçlarını gösterir birdatetimeoffset(4)için değer birdatetime2(3)değer.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime2 datetime2(3)
SELECT @datetimeoffset = '1912-10-25 12:24:32.1234 +10:0'
SELECT @datetime2 = @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)

datetime2 veri türü

Aşağıdaki tabloda ne olacağı açıklanır, birdatetime2veri türü dönüştürülür diğer tarih ve saat veri türü.

Veri türü dönüştürme

Dönüştürme ayrıntıları

date

Yıl, ay ve gün kopyalanır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetime2(4)için değer birdatedeğer.

DECLARE @datetime2 datetime2(4)
DECLARE @date date
SELECT @datetime2 = '12-10-25 12:32:10.1234'
SELECT @date = @datetime2
SELECT @datetime2 AS '@datetime2', @date AS 'date'
--Result
--@datetime2               date
-------------------------- ----------
--2025-12-10 12:32:10.1234 2025-12-10
--
--(1 row(s) affected)

time(n)

Saat, dakika, ikinci ve kesirli saniye kopyalanır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetime2(4)için değer birtime(3)değer.

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

datetime

Tarih ve saat değerlerini kopyalanır., Kesirli duyarlığınıdatetimeoffset(n)değeri üç basamak büyük olduğundan, değer atılır.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetime2için değer birdatetimedeğer.

DECLARE @datetime2 datetime2
DECLARE @datetime datetime
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @datetime = @datetime2
SELECT @datetime2 AS '@datetime2', @datetime AS '@datetime'
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

smalldatetime

Tarih, saat ve dakika kopyalanır.Saniyeleri 0 olarak küme.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetime2için değer birsmalldatetimedeğer.

DECLARE @datetime2 datetime2
DECLARE @smalldatetime smalldatetime
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @smalldatetime = @datetime2
SELECT @datetime2 AS '@datetime2', @smalldatetime AS '@smalldatetime'
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

datetimeoffset(n)

The datetime2(n) value is copied to the datetimeoffset(n) value.Saat dilimi farkı çok + 00: 0 küme., Duyarlığınıdatetime2(n)değer duyarlığını büyüktürdatetimeoffset(n)değeri kesildi uyma.

Aşağıdaki kod gösterir sonuçlar dönüştürme birdatetime2(5)için değer birdatetimeoffset(3)değer.

DECLARE @datetime2 datetime2(3)
DECLARE @datetimeoffset datetimeoffset(2)
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @datetimeoffset = @datetime2
SELECT @datetime2 AS '@datetime2', @datetimeoffset AS '@datetimeoffset(2)'
--Result
--@datetime2              @datetimeoffset(2)
------------------------- -----------------------------
--2025-12-10 12:32:10.123 2025-12-10 12:32:10.12 +00:00
--
--(1 row(s) affected)

CAST kullanarak ve saat, tarih, datetime2 ve datetimeoffset Çevir

Bu bölüm, tarih ve saat veri türleri arasında dönüştürme hakkında bilgi sağlar.

Datetimeoffset dönüştürme

  • Her birdatetimeoffsetsaat dilimi değerini olduğu dolaylı olarak türetilen bir değerden (örneğin, bir basit atama işleminde) bir saat dilimi olmayan için değeri olmadan saat dilimi yerel olarak kabul ve geçerli varsayılan saat dilimi (00: 00) öteleme verin kendisine gelen çıkarılır UTC.
  1. The UTC saat dilimini (00: 00) non–time bölge veri türlerine dönüştürdüğünüzde her zaman eklenirdatetimeoffsetaşağıdaki dönüştürme için:
  • date Kime: datetimeoffset

  • time Kime: datetimeoffset

  • datetime2 Kime: datetimeoffset

  • datetimeorsmalldatetimetodatetimeoffset

  • Dize hazır bilgi, geçerlidate,time, ordatetimesaat dilimi biçimlerine olmadandatetimeoffset

Datetimeoffset dönüştürme

Sonra dönüştürmedatetimeoffsetaşağıdaki non–time bölge türleri için stil 0 (varsayılan) her zaman belirten dönüşüdate,time,datetime2,datetime, or smalltimedeğer yerel biçimde korunan saat dilimi uzaklığı; ve her zaman 1 stilini gösterir UTC biçiminde.

Bir tarih veya saat değeri her zaman dilimi aşağıdaki dönüştürme, biri örtük olarak türetilir olmayandatetimeoffsetdeğer kabul UTC.Yerel saat vermek değerine korunan saat dilimi öteleme eklenir.Sonuç, bir saat dilimi farkı olmadan yerel süresidir.

  • datetimeoffset Kime: date

  • datetimeoffset Kime: time

  • datetimeoffset Kime: datetime2

  • datetimeoffsettodatetimeorsmalldatetime

  • 0 Ve 1 stilleri için kullanılamazdatetimeoffsetdize dönüştürme.Bunun yerine, önce dönüştürmeniz gelendatetimeoffsettodatetime2or datetimevetovarcharor char.

Varolan bir CONVERT stili içeriyorsa, saat bölümünü ve dönüştürme olan gelendatetimeoffsetdize için saat dilimi uzaklığı (haricinde, stil 127) bulunur.Değil istediğiniz saat dilimi farkı, ATAMA içindatetime2ilk ve sonra dize.

Tüm varolan tarih ve saati stilleri herhangi uygulanırdatetimeoffsetdönüştürme ve saat dilimi uzaklığı dize korunacak.

Giriş dizesi saat dilimi mahsup bölümü her zaman hem ss mm, ve işareti, çift sayı ya da olması gereken + veya – zorunlu.

Dönüştürme iptal edilen bilgiler

  • Sonra dönüştürmedatetime2ordatetimeoffsettodatetarih bölümünü açıkça ayıklanır ve yuvarlama yok.İçindatetimeoffsetayıklama işlemi gerçekleştirilir yerel tarih ve saat ancak değil UTC değeri.

  • Kapalı bir dönüştürme içindatetimeoffsettodate,time,datetime2,datetime, orsmalldatetime, dönüştürme bağlı yerel tarih ve saat değerini (kalıcı saat dilimi uzaklığı).Örnek, ne zamandatetimeoffset(3), değer, 2006-10-21 12:20:20.999 -8: 00, dönüştürülürtime(3)sonuç olduğundan 12:20:20.999 değil 20:20:20.999(UTC).

Dönüştürme, kesme

  • Yüksek duyarlıklı saat değerlerinden dönüştürme Düşük duyarlılık değerlerine izin verilir.Yüksek duyarlıklı değerleri Düşük duyarlılık türü sığması için kesilecek.

Kesirli saniye dönüştürme

Bir stili içeren saat biçimi hh:mm:ss.mmm, biçimi olacak için hh:mm:ss. [nnnnnnntime(n),datetime2(n)ve datetimeoffset(n).Basamak sayısı türü belirtimine bağlıdır.Yoksa yalnızca milisaniyelik precision, istediğiniz dönüştürmek içindatetime2(3)önce ve sonra dize.

Stiller için 9, 109, 13, 113, 21, 121, 130 ve 131, iki nokta üstüste (:) kesirli saniye önceki ayırıcı için desteklenmiyor time, datetime2ve datetimeoffsettürleri Dize dönüştürme.Çıkış dize biçimi, bu stillerinden herhangi bir nokta (.) dönüştürülür.

Bağımsız değişkenler için CONVERT stil işlev

Aşağıdaki tabloda, örnek olarak verilmektedirdate,time,datetime2, vedatetimeoffsetCONVERT işlevini. stil bağımsız değişkenler için değerleriStili hakkında daha fazla bilgi için "Arguments" bölümüne bakın. CAST ve CONVERT (Transact-SQL)

Style

Associated standard

Input/Output (3)

format

date

time(n)

datetime2(n)

datetimeoffset(n)

0 or 100 (1,2)

Default

Ay gg yyyy hh:miAM (ya da PM)

1 Ocak 2001

12: 20 PM

1 Ocak 2001 12: 20 PM

1 Ocak 2001 12: 20 PM-08: 00

101

ABD:.

AA.GG.YYYY

01/01/2001

-

01/01/2001

01/01/2001

102

ANSI

yy.mm.dd

2001.01.01

-

2001.01.01

2001.01.01

103

İngiliz/Fransızca

gg/aa/yy

01/01/2001

-

01/01/2001

01/01/2001

104

Almanca

dd.mm.YY

01.01.2001

-

01.01.2001

01.01.2001

105

İtalyanca

gg-aa-yy

01-01-2001

-

01-01-2001

01-01-2001

106(1)

-

AA ay yy

01 Ocak 2001

-

01 Ocak 2001

01 Ocak 2001

107(1)

-

Pzt dd, yy

01 Ocak, 2001

-

01 Ocak, 2001

01 Ocak, 2001

108

-

hh:mi:ss

-

12:20:20

12:20:20

12:20:20

9 or 109 (1,2)

Varsayılan + milisaniye

Ay gg yyyy hh:mi:ss:mmmAM (ya da PM)

1 Ocak 2001

12:20:20.1234567 AM

1 Ocak 2001 12:20:20.1234567 PM

1 Ocak 2001 12:20:20:1230000 PM-08: 00

110

ABD

aa-gg-yy

01-01-2001

-

01-01-2001

01-01-2001

111

JAPAN

yy/aa/gg

2001/01/01

-

2001/01/01

2001/01/01

112

ISO

YYAAGG

20010101

-

20010101

20010101

13 or 113 (1,2)

Avrupa varsayılan + milisaniye

dd mon yyyy hh:mi:ss:mmm(24h)

01 Ocak 2001

12:20:20.1234567

01 Ocak 2001 12:20:20.1234567

01 Ocak 2001 12:20:20:1230000-08: 00

114

-

hh:mi:ss:mmm(24h)

-

12:20:20.1234567

12:20:20.1234567

12:20:20:1230000 -08:00

20 or 120 (2)

Geleneksel ODBC

yyyy-aa-gg hh:mi:ss(24h)

2001-01-01

12:20:20

2001-01-01 12:20:20

2001-01-01 12:20:20 -08:00

21 or 121 (2)

ODBC (milisaniye ile) kabul edilen

yyyy-aa-gg hh:mi:ss.mmm(24h)

2001-01-01

12:20:20.1234567

2001-01-01 12:20:20.1234567

2001-01-01 12:20:20.1230000 -08:00

126 (4)

ISO8601

yyyy-aa-ddThh:mi:ss.mmm (boşluksuz)

2001-01-01

12:20:20.1234567

2001-01-01T 12:20:20.1234567

2001-01-01T 12:20:20.1234567

127(6, 7)

Z saat dilimi ile ISO8601.

yyyy-aa-ddThh:mi:ss.mmmZ

(boşluksuz)

2001-01-01

12:20:20.1234567Z

2001-01-01T 12:20:20.1234567Z

2001 - 01 - 01T20:20:20.1230000Z

130 (1,2)

Hijri (5)

dd mon yyyy hh:mi:ss:mmmAM

01 Ocak 2001

12:20:20.1230000 PM

01 Ocak 2001 12:20:20.1230000 PM

1 Ocak 2001 12:20:20:1230000 PM-08: 00

131 (2)

Hijri (5)

gg/aa/yy hh:mi:ss:mmmAM

01/01/2001

12:20:20.1230000 PM

01/01/2001 12:20:20.1230000 PM

01/01/2001 12:20:20.1230000 PM-08: 00

1 Bu stil dönüş nondeterministic sonuçlar.(Yüzyıl) olmadan tüm (yy) içeren stilleri ve (yüzyıl ile) alt küme küme küme kümesini (yyyy) stilleri.

2 The default values (style0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).

3datetimeÇıkış karakter veri. dönüştürdüğünüzde dönüştürdüğünüzde giriş

4 XML. için tasarlanmış Dönüştürme içindatetimeorsmalldatetimekarakter verileri, önceki tabloyu. açıklandığı gibi çıktı biçimi olan

5 Hijri is a calendar system with several variations.SQL Server uses the Kuwaiti algorithm.

6datetimeVeya için çevrim karakter verileri, yalnızca desteklenen smalldatetime.İçin yalnızca gösteren karakter verileri, tarih veya bileşenleri yalnızca saat atamadatetimeorsmalldatetimeveri türleri, belirsiz bir saat bileşen 00:00:00.000 için küme ve belirsiz tarih bileşeni 1900-01-01 küme.

7The optional time zone indicator, Z, is used to make it easier to map XML datetime values that have time zone information to SQL Serverdatetime values that have no time zone.Z gösterge için saat dilimi: UTC-0 olur.

SQL Server tarih ve saat kısıtlamaları

Aşağıdaki listede, bir tarih veya saat bölümü içeren herhangi bir tarih ve saat veri türü tarih ve saate bakın.

  • Hiçbir sunucu tarafı ışığından yararlanma saat (DST) destekdatetimeoffset.

  • tarih Jülyen takvimini desteği yok.

  • Gece yarısı '24' saat gösterimi, süresi desteği yok.

  • saat içinde '59' Destek 'artık saniye' destekler.

  • Hiçbir saat Destek 'bir nanosecond' ya da daha küçük ikinci kesinlik.

  • saat saat dilimi desteği.

  • Standart SQL INTERVAL işlem desteği yok.

Geriye dönük uyumluluk için kapalı-düzey istemciler

Some down-level clients do not supportthe time, date, datetime2 and datetimeoffset data types added in SQL Server 2008.Aşağıdaki tablo, üst düzey örneğini tipi eşleştirmesini gösterirSQL Server 2008ve kapalı-düzey istemciler.

SQL Server 2008 veri türü

Dize hazır bilgi biçimi geçirilen için varsayılan kapalı-düzey istemcisi

kapalı-ODBC düzey

kapalı-OLEDB düzey

kapalı-JDBC düzey

Alt düzey SQLCLIENT

time

hh:mm:ss[.nnnnnnn]

SQL_WVARCHAR veya SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.dize

Dize veya SqString

date

YYYY-AA-GG

SQL_WVARCHAR veya SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.dize

Dize veya SqString

datetime2

YYYY-MM-DD hh:mm:ss[.nnnnnnn]

SQL_WVARCHAR veya SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.dize

Dize veya SqString

datetimeoffset

YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm

SQL_WVARCHAR veya SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.dize

Dize veya SqString

Örnekler

C.Tarih ve saat veri türlerini karşılaştırma

Aşağıdaki örnek, dize her tarih ve saat veri türüne çevrim sonuçlar karşılaştırır.Çalıştığı içinCASTdize izin için birden fazla olan bir kesirli saniye duyarlılığa sahipsmalldatetimeordatetimeyükseltme hatası.

Veri türü

Output

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(7)

2007-05-08 12:35:29.1234567

datetimeoffset(7)

2007-05-08 12:35:29.1234567 +12:15

B.Geçerli sistem tarih ve saat alma

Aşağıdaki örnek, nasıl kullanılacağını gösterirSQL ServerSistem İşlevler, iade geçerli tarih ve saat.

C.Bir günde tüm datetime2 değerleri arama

  • Aşağıdaki örnek, bir günde tüm tarih ve saat değerleri aramak gösterilmiştir.

D.Dönem içindeki gün arama

Aşağıdaki örnekler, bir saat aralık bulmak için saat değerleri tarih için arama

E.DATEPART ve DATEADD bir datepart ilk ve son günleri bulmak için kullanma

Aşağıdaki örnek, ilk veya son günü almayı gösterir birdatepart.

F.DATEADD, DATEDIFF, DATENAME ve DATEPART datepart kullanıcı tanımlı bağımsız değişkenleri kullanma

Aşağıdaki örnek, herhangi bir bölümünü sabit ekleyen skaler kullanıcı tanımlı bir işlev oluşturur birdatetime2değer.

G.DATEPART grubuna bir tarihin bölümlerini kullanmak

Aşağıdaki örnekAdventureWorksörnek veritabanı.The DATEPART is used to group total sales by weekday, month, year, and year/month/weekday.

USE AdventureWorks
GO
SELECT SUM(TotalDue) AS 'Total Sales'
    ,DATEPART(year,OrderDate)AS 'By Year'
    ,DATEPART(month,OrderDate) AS 'By Month'
    ,DATEPART(weekday,OrderDate) AS 'By Weekday'
FROM Sales.SalesOrderHeader
WHERE YEAR(OrderDate) IN('2003','2004')
GROUP BY GROUPING SETS 
    (
    (DATEPART(year,OrderDate))
    ,(DATEPART(month,OrderDate))
    ,(DATEPART(weekday,OrderDate))
    ,(
        DATEPART(year,OrderDate)
        ,DATEPART(month,OrderDate),
        DATEPART(weekday,OrderDate))
    )
ORDER BY DATEPART(year,OrderDate)
    ,DATEPART(month,OrderDate)
    ,DATEPART(weekday,OrderDate)