Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
24 saatlik saati temel alan günün saatiyle birleştirilmiş bir tarih tanımlar. datetime2 , daha büyük bir tarih aralığına, daha büyük bir varsayılan kesir duyarlığına ve isteğe bağlı olarak kullanıcı tarafından belirtilen duyarlığa sahip mevcut tarih saat türünün bir uzantısı olarak kabul edilebilir.
datetime2 açıklaması
| Property | Value |
|---|---|
| Syntax | datetime2 [ (kesirli saniye duyarlığı) ] |
| Usage | DECLARE @MyDatetime2 datetime2(7);CREATE TABLE Table1 (Column1 datetime2(7)); |
| Varsayılan dize değişmez değeri biçimi (alt düzey istemci için kullanılır) |
yyyy-MM-dd HH:mm:ss[.nnnnnnn]Daha fazla bilgi için bu makalenin devamında yer alan alt düzey istemciler için geriye dönük uyumluluk bölümüne bakın. |
| Tarih aralığı |
0001-01-01 ile 9999-12-31 arasında1 Ocak CE - 31 Aralık 9999 CE |
| Zaman aralığı |
00:00:00 ile 23:59:59.9999999 arasında |
| Saat dilimi uzaklık aralığı | None |
| Eleman aralıkları |
yyyy , ile arasında bir 00019999yılı temsil eden dört basamaklı bir sayıdır.MM , belirtilen yıldaki bir ayı temsil eden ile arasında değişen 0112iki basamaklı bir sayıdır.dd, belirtilen ayın gününü temsil eden aya 01 göre değişen 31 iki basamaklı bir sayıdır.HH , ile arasında değişen 0023ve saati temsil eden iki basamaklı bir sayıdır.mm , dakikayı temsil eden ile arasında değişen 0059iki basamaklı bir sayıdır.ss , ikincisini temsil eden ile arasında değişen 0059iki basamaklı bir sayıdır.n* , kesirli saniyeleri temsil eden sıfırdan 0 yedi basamaklı bir sayıdır 9999999. Informatica'da, n değerinden küçük 3olduğunda kesirli saniyeler kesilir. |
| Karakter uzunluğu | En az 19 konum (yyyy-MM-dd HH:mm:ss) ile en fazla 27 (yyyy-MM-dd HH:mm:ss.0000000) arasında |
| Hassasiyet, ölçek | 100 nanosaniye (100 ns) doğrulukla 0 ile 7 basamak arasında. Varsayılan duyarlık 7 basamaktır. Microsoft Fabric Veri Ambarı'nda bu duyarlık, varsayılan değer olmadan 0 ile 6 arasından bir tamsayı olabilir. Duyarlık, Microsoft Fabric Veri Ambarı'nda belirtilmelidir. |
| Depolama boyutu 1 | 3'ten az duyarlık için 6 bayt. Duyarlık 3 veya 4 için 7 bayt. Diğer tüm duyarlık 8 bayt gerektirir. 2 |
| Accuracy | 100 nanosaniye |
| Varsayılan değer | 1900-01-01 00:00:00 |
| Calendar | Gregorian |
| Kullanıcı tanımlı kesirli ikinci duyarlık | Yes |
| Saat dilimi fark fark ve koruma | No |
| Gün ışığından yararlanmaya duyarlı | No |
1 Sağlanan değerler sıkıştırılmamış satır deposu içindir. Veri sıkıştırma veya columnstore kullanımı her duyarlık için depolama boyutunu değiştirebilir. Ayrıca diskteki ve bellekteki depolama boyutu farklılık gösterebilir. Örneğin, toplu iş modu kullanıldığında datetime2 değerleri her zaman bellekte 8 bayt gerektirir.
2Datetime2 değeri bir varbinary değere atandığında, duyarlığı depolamak için varbinary değerine fazladan bir bayt eklenir.
Veri türü meta verileri için bkz . sys.systypes veya TYPEPROPERTY. Duyarlık ve ölçek, bazı tarih ve saat veri türleri için değişkendir. Bir sütunun duyarlığı ve ölçeğini almak için bkz. COLUMNPROPERTY, COL_LENGTH veya sys.columns.
Datetime2 için desteklenen dize değişmez değerleri biçimleri
Aşağıdaki tablolarda datetime2 için desteklenen ISO 8601 ve ODBC dize değişmez değerleri listelenmektedir. datetime2'nin tarih ve saat bölümleri için alfabetik, sayısal, ayrılmamış ve saat biçimleri hakkında bilgi için bkz. tarih ve saat.
| ISO 8601 | Descriptions |
|---|---|
yyyy-MM-ddTHH:mm:ss[.nnnnnnn] |
Bu biçim ve SET LANGUAGE oturum yerel ayarı ayarlarından SET DATEFORMAT etkilenmez.
T, iki nokta üst üste (): ve nokta (.) dize değişmez değerine eklenir, örneğin2024-05-02T19:58:47.1234567. |
| ODBC | Description |
|---|---|
{ ts 'yyyy-MM-dd HH:mm:ss[.nnnnnnn]' } |
ODBC API'lerine özgü: Kesirli saniyeleri temsil eden ondalık ayırıcının sağındaki basamak sayısı 0'dan 7'ye (100 nanosaniye) kadar belirtilebilir. |
ANSI ve ISO 8601 uyumluluğu
ANSI ve ISO 8601 tarih ve saat uyumluluğu datetime2 için geçerlidir.
Alt düzey istemciler için geriye dönük uyumluluk
Bazı alt düzey istemciler saat, tarih, datetime2 ve datetimeoffset veri türlerini desteklemez . Aşağıdaki tabloda, SQL Server'ın üst düzey bir örneği ile alt düzey istemciler arasındaki tür eşlemesi gösterilmektedir.
| SQL Server veri türü | Alt düzey istemciye geçirilen varsayılan dize değişmez değeri biçimi | Alt düzey ODBC | Alt düzey OLEDB | Alt düzey JDBC | Alt düzey SQLCLIENT |
|---|---|---|---|---|---|
| time | HH:mm:ss[.nnnnnnn] | SQL_WVARCHAR veya SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Dize veya SqString |
| date | yyyy-MM-dd | SQL_WVARCHAR veya SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Dize veya SqString |
| datetime2 | yyyy-MM-dd SS:mm:ss[.nnnnnnn] | SQL_WVARCHAR veya SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Dize veya SqString |
| datetimeoffset | yyyy-MM-dd SS:mm:ss[.nnnnnnn] [+|-]hh:mm | 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ürlerine dönüştürdüğünüzde, Veritabanı Altyapısı tarih veya saat olarak tanıyamayan tüm değerleri reddeder. CAST ve CONVERT işlevlerini tarih ve saat verileriyle kullanma hakkında bilgi için bkz . CAST ve CONVERT
Diğer tarih ve saat türlerini datetime2 veri türüne dönüştürme
Bu bölümde, diğer tarih ve saat veri türleri datetime2 veri türüne dönüştürüldüğünde nelerin oluştuğu açıklanmaktadır.
Dönüştürme tarihtenolduğunda, yıl, ay ve gün kopyalanır. Zaman bileşeni 00:00:00.0000000 olarak ayarlanır. Aşağıdaki kod, bir date değerini datetime2 bir değere dönüştürmenin sonuçlarını gösterir.
DECLARE @date AS DATE = '12-21-16';
DECLARE @datetime2 AS DATETIME2 = @date;
SELECT @datetime2 AS '@datetime2',
@date AS '@date';
Sonuç kümesi aşağıdadır.
@datetime2 @date
--------------------------- ----------
2016-12-21 00:00:00.0000000 2016-12-21
Dönüştürme zamanı (n) olduğunda, saat bileşeni kopyalanır ve tarih bileşeni olarak 1900-01-01ayarlanır. Aşağıdaki örnek, bir time(7) değerini datetime2 değerine dönüştürmenin sonuçlarını gösterir.
DECLARE @time AS TIME (7) = '12:10:16.1234567';
DECLARE @datetime2 AS DATETIME2 = @time;
SELECT @datetime2 AS '@datetime2',
@time AS '@time';
Sonuç kümesi aşağıdadır.
@datetime2 @time
--------------------------- ----------------
1900-01-01 12:10:16.1234567 12:10:16.1234567
Dönüştürme smalldatetimeolduğunda, saatler ve dakikalar kopyalanır. Saniyeler ve kesirli saniyeler 0 olarak ayarlanır. Aşağıdaki kod, bir smalldatetime değerini datetime2 bir değere dönüştürmenin sonuçlarını gösterir.
DECLARE @smalldatetime AS SMALLDATETIME = '12-01-16 12:32';
DECLARE @datetime2 AS DATETIME2 = @smalldatetime;
SELECT @datetime2 AS '@datetime2',
@smalldatetime AS '@smalldatetime';
Sonuç kümesi aşağıdadır.
@datetime2 @smalldatetime
--------------------------- -----------------------
2016-12-01 12:32:00.0000000 2016-12-01 12:32:00
Dönüştürme datetimeoffset(n)'den olduğunda, tarih ve saat bileşenleri kopyalanır. Saat dilimi kesilir. Aşağıdaki örnekte, bir datetimeoffset(7) değerini datetime2 bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @datetimeoffset AS DATETIMEOFFSET (7) = '2016-10-23 12:45:37.1234567 +10:0';
DECLARE @datetime2 AS DATETIME2 = @datetimeoffset;
SELECT @datetime2 AS '@datetime2',
@datetimeoffset AS '@datetimeoffset';
Sonuç kümesi aşağıdadır.
@datetime2 @datetimeoffset
--------------------------- ----------------------------------
2016-10-23 12:45:37.1234567 2016-10-23 12:45:37.1234567 +10:00
Dönüştürme tarih saatinden geldiğinde, tarih ve saat kopyalanır. Kesirli duyarlık 7 basamağı genişletilmiştir. Aşağıdaki örnekte, bir datetime değerini datetime2 bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @datetime AS DATETIME = '2016-10-23 12:45:37.333';
DECLARE @datetime2 AS DATETIME2 = @datetime;
SELECT @datetime2 AS '@datetime2',
@datetime AS '@datetime';
Sonuç kümesi aşağıdadır.
@datetime2 @datetime
----------------------- ---------------------------
2016-10-23 12:45:37.3333333 2016-10-23 12:45:37.333
datetime kullanılırken açıkça datetime2'ye atama
Veritabanı uyumluluk düzeyi 130 ve üzeri altında, datetime'dan datetime2 veri türlerine örtük dönüştürmeler, kesirli milisaniyeleri hesaplayarak geliştirilmiş doğruluğu gösterir ve önceki örnekte görüldüğü gibi farklı dönüştürülmüş değerler elde edilir. datetime ile datetime2 veri türleri arasında karma bir karşılaştırma senaryosu olduğunda, datetime2 veri türüne açık atama kullanın. Daha fazla bilgi için bkz. Bazı veri türlerini ve yaygın olmayan işlemleri işlemeye yönelik SQL Server ve Azure SQL Veritabanı geliştirmeleri.
Dize değişmez değerlerini datetime2'ye dönüştürme
Dizelerin tüm bölümleri geçerli biçimlerdeyse, dize değişmez değerlerinden tarih ve saat türlerine dönüştürmelere izin verilir. Aksi takdirde bir çalışma zamanı hatası oluşur. Tarih ve saat türlerinden dize değişmez değerlerine kadar bir stil belirtmeyen örtük dönüştürmeler veya açık dönüştürmeler geçerli oturumun varsayılan biçimindedir. Aşağıdaki tabloda, bir dize değişmez değerini datetime2 veri türüne dönüştürme kuralları gösterilmektedir.
| Giriş dizesi değişmez değeri | datetime2(n) |
|---|---|
ODBC DATE |
ODBC dize değişmez değerleri datetime veri türüne eşlenir. Değişmez değerlerden ODBC DATETIMEdatetime2 türlerine yapılan herhangi bir atama işlemi, dönüştürme kuralları tarafından tanımlandığı gibi datetime ile bu tür arasında örtük bir dönüştürmeye neden olur. |
ODBC TIME |
Önceki ODBC DATE kurala bakın. |
ODBC DATETIME |
Önceki ODBC DATE kurala bakın. |
DATE sadece |
Bölümü TIME varsayılan olarak olarak 00:00:00gösterilir. |
TIME sadece |
Bölümü DATE varsayılan olarak olarak 1900-01-01gösterilir. |
TIMEZONE sadece |
Varsayılan değerler sağlanır. |
DATE + TIME |
Önem -siz. |
DATE + TIMEZONE |
İzin verilmiyor. |
TIME + TIMEZONE |
Bölüm DATE varsayılan olarak 1900-1-1'e ayarlı.
TIMEZONE girdisi yoksayılır. |
DATE + TIME + TIMEZONE |
Yerel DATETIME kullanılır. |
Examples
Aşağıdaki örnek, bir dizeyi her tarih ve saat veri türüne dönüştürmenin sonuçlarını karşılaştırı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';
Sonuç kümesi aşağıdadır.
| 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 | 2007-05-08 12:35:29.1234567 |
| datetimeoffset | 2007-05-08 12:35:29.1234567 +12:15 |