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
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
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ı.
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.
İç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.
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
- 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)
See Also