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ı
Günün saatini tanımlar. Saat, saat dilimi farkındalığı olmadan ve 24 saatlik bir saati temel alır.
Note
Informatica Bağlayıcısı'nı kullanan PDW müşterileri için informatica bilgileri sağlanır.
zaman Tanımı
| Property | Value |
|---|---|
| Syntax | time [ (kesirli ikinci ölçek) ] |
| Usage | @MYTIME zaman BILDIRME(7) CREATE TABLE Table1 ( Sütun1 saat(7) ) |
| kesirli saniye ölçeği | Saniyenin kesirli kısmı için basamak sayısını belirtir. Bu, 0 ile 7 arasından bir tamsayı olabilir. Informatica için bu, 0 ile 3 arasında bir tamsayı olabilir. Varsayılan kesirli ölçek 7'dir (100ns). Microsoft Fabric'te bu, 0'dan 6'ya kadar varsayılan olmayan bir tamsayı olabilir. Duyarlık Microsoft Fabric'te belirtilmelidir. |
| Varsayılan dize değişmez değeri biçimi (alt düzey istemci için kullanılır) |
Informatica için ss:mm:ss[.nnnnnnn] Daha fazla bilgi için Alt Düzey İstemciler için Geriye Dönük Uyumluluk bölümüne bakın. |
| Range | 00:00:00.00000000 ile 23:59:59.99999999 (Informatica için 00:00:00.000 ile 23:59:59.999) |
| Eleman aralıkları | ss, saati temsil eden 0 ile 23 arasında iki basamaktır. mm, dakikayı temsil eden 0 ile 59 arasında iki basamaktır. ss, ikinciyi temsil eden 0 ile 59 arasında iki basamaktır. n* 0 ile 9999999 arasında kesirli saniyeleri temsil eden sıfır ile yedi basamaktır. Informatica için n* sıfır ile üç basamaktır ve 0 ile 999 arasında bir sayıdır. |
| Karakter uzunluğu | En az 8 konum (ss:mm:ss) ile en fazla 16 (ss:mm:ss.nnnnnnnn). Informatica için en fazla 12 'dir (ss:mm:ss.nnn). |
| Hassasiyet, ölçek (kullanıcı yalnızca ölçeği belirtir) |
Aşağıdaki tabloya bakın. |
| Depolama boyutu | Sabit olan 5 bayt, varsayılan olarak 100ns kesirli ikinci duyarlık ile varsayılan değerdir. Informatica'da varsayılan değer 4 bayttır, sabittir ve varsayılanı 1ms kesirli ikinci duyarlıktır. |
| Accuracy | 100 nanosaniye (Informatica'da 1 milisaniye) |
| Varsayılan değer | 00:00:00 Bu değer, datetime2 veya datetimeoffset'e örtük dönüştürme için eklenen saat bölümü için kullanılır. |
| Kullanıcı tanımlı kesirli ikinci duyarlık | Yes |
| Saat dilimi fark fark ve koruma | No |
| Gün ışığından yararlanmaya duyarlı | No |
| Belirtilen ölçek | Sonuç (duyarlık, ölçek) | Sütun uzunluğu (bayt) | Fractional seconds precision |
|---|---|---|---|
| time | (16,7) [(12,3) Informatica] | 5 (Informatica'da 4) | 7 (Informatica'da 3) |
| time(0) | (8,0) | 3 | 0-2 |
| time(1) | (10,1) | 3 | 0-2 |
| time(2) | (11,2) | 3 | 0-2 |
| time(3) | (12,3) | 4 | 3-4 |
| zaman(4)* | (13,4) | 4 | 3-4 |
| zaman(5)* | (14,5) | 5 | 5-7 |
| zaman(6)* | (15,6) | 5 | 5-7 |
| time(7)* + | (16,7) | 5 | 5-7 |
* Informatica'da desteklenmez.
+ Microsoft Fabric'te desteklenmez.
Zaman için Desteklenen Dize Değişmez Değerleri Biçimleri
Aşağıdaki tabloda , zaman veri türü için geçerli dize değişmez değer biçimleri gösterilmektedir.
| SQL Server | Description |
|---|---|
| hh:mm[:ss][:kesirlik saniyeler][][PM] hh:mm[:ss][.kesirli saniyeler][][PM] hhAM[PM] hh[PM] |
0 saat değeri,'nin belirtilip belirtilmediğinden bağımsız olarak gece yarısından () sonraki saati temsil eder. Saat 0'a eşit olduğunda PM belirtilemez. 01 ile 11 arasındaki saat değerleri, veya PM belirtilmezse öğleden önceki saatleri temsil eder. Değerler, belirtildiğinde öğlenden önceki saatleri temsil eder. Değerler, PM belirtilirse öğleden sonraki saatleri temsil eder. 12 saat değeri, veya PM belirtilmezse öğle saatinde başlayan saati temsil eder. belirtilirse, değer gece yarısı başlayan saati temsil eder. PM belirtilirse, değer öğle saatinde başlayan saati temsil eder. Örneğin, 12:01 öğleden sonra 1 dakikadır, saat 12:01 gibi; ve 12:01 gece yarısından bir dakika sonra. 12:01'i belirtmek, 00:01 veya 00:01'i belirtmekle aynıdır. 13 ile 23 arasındaki saat değerleri, veya PM belirtilmezse öğleden sonraki saatleri temsil eder. Değerler, PM belirtildiğinde öğleden sonraki saatleri de temsil eder. Saat değeri 13 ile 23 arasında olduğunda belirtilemez. Saat değeri 24 geçerli değil. Gece yarısını göstermek için 12:00 veya 00:00 kullanın. Milisaniyeler önünde iki nokta üst üste (:) veya nokta (.) bulunabilir. İki nokta üst üste kullanılırsa, sayı saniyenin binde biri anlamına gelir. Nokta kullanılırsa, tek bir basamak saniyenin onda biri, iki basamak saniyenin yüzde biri ve üç basamak da saniyenin binde biri anlamına gelir. Örneğin, 12:30:20:1, 12:30'u geçen 20 ve bin saniyeyi gösterir; 12:30:20.1, 12:30'u 20 ve onuncu saniyeyi gösterir. |
| ISO 8601 | Notes |
|---|---|
| hh:mm:ss hh:mm[:ss][.kesirlik saniyeler] |
ss, saat dilimi uzaklığındaki saat sayısını temsil eden 0 ile 23 arasında iki basamaktır. mm, saat dilimi uzaklığındaki ek dakika sayısını temsil eden 0 ile 59 arasında iki basamaktır. |
| ODBC | Notes |
|---|---|
| {t 'hh:mm:ss[.kesirli saniyeler]'} | ODBC API'lerine özgü. |
ANSI ve ISO 8601 Standartları ile uyumluluk
ISO 8601 (5.3.2 ve 5.3) tarafından tanımlandığı gibi 59'un üzerinde gece yarısı ve artık saniyeyi temsil etmek için 24 saati kullanılması, mevcut tarih ve saat türleriyle geriye dönük olarak uyumlu ve tutarlı olması desteklenmez.
Varsayılan dize değişmez değeri biçimi (alt düzey istemci için kullanılır), hh:mm:ss[.nnnnnnnn] olarak tanımlanan SQL standart formuyla hizalanır. Bu biçim kesirli saniyeler hariç TIME için ISO 8601 tanımına benzer.
Alt Düzey İstemciler 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 hh: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 SQL Server, tarih veya saat olarak tanıyamadığı tüm değerleri reddeder. CAST ve CONVERT işlevlerini tarih ve saat verileriyle kullanma hakkında bilgi için bkz. CAST ve CONVERT (Transact-SQL)
Saat(n) Veri Türünü Diğer Tarih ve Saat Türlerine Dönüştürme
Bu bölümde, bir saat veri türü diğer tarih ve saat veri türlerine dönüştürüldüğünde ne olduğu açıklanır.
Dönüştürme saat(n) olduğunda, saat, dakika ve saniye kopyalanır. Hedef duyarlık kaynak duyarlıktan küçük olduğunda, kesirli saniyeler hedef duyarlığı sığacak şekilde yukarı yuvarlanir. Aşağıdaki örnekte, bir time(4) değerini time(3) bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @timeFrom TIME(4) = '12:34:54.1237';
DECLARE @timeTo TIME(3) = @timeFrom;
SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)';
Sonuç kümesi aşağıdadır.
time(3) time(4)
------------ -------------
12:34:54.124 12:34:54.1237
Dönüştürme tarihi ise, dönüştürme başarısız olur ve hata iletisi 206 oluşturulur: "İşlenen türü çakışması: tarih saatle uyumsuz".
Dönüştürme tarih saatine olduğunda saat, dakika ve ikinci değerler kopyalanır; ve tarih bileşeni '1900-01-01' olarak ayarlanır.
Saat(n) değerinin kesirli saniye duyarlığı üç basamaktan büyük olduğunda, tarih saat sonucu kesilir. Aşağıdaki kod, bir time(4) değerini datetime bir değere dönüştürmenin sonuçlarını gösterir.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime DATETIME = @time;
SELECT @time AS '@time', @datetime AS '@datetime';
Sonuç kümesi aşağıdadır.
@time @datetime
------------- -----------------------
12:15:04.1237 1900-01-01 12:15:04.123
Dönüştürme smalldatetime olduğunda, tarih '1900-01-01' olarak ayarlanır ve saat ve dakika değerleri yukarı yuvarlanır. Saniyeler ve kesirli saniyeler 0 olarak ayarlanır. Aşağıdaki kod, bir time(4) değerini smalldatetime bir değere dönüştürmenin sonuçlarını gösterir.
Dakika değerinin yukarı yuvarlamasını göster:
DECLARE @time TIME(4) = '12:15:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';
Sonuç kümesi aşağıdadır.
@time @smalldatetime
---------------- -----------------------
12:15:59.9999 1900-01-01 12:16:00--
Saat değerinin yukarı yuvarlamasını göster:
DECLARE @time TIME(4) = '12:59:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';
Sonuç kümesi aşağıdadır.
@time @smalldatetime
---------------- -----------------------
12:59:59.9999 1900-01-01 13:00:00
Dönüştürme datetimeoffset(n)ise, tarih '1900-01-01' olarak ayarlanır ve saat kopyalanır. Saat dilimi uzaklığı +00:00 olarak ayarlanır.
Time(n) değerinin kesirli saniye duyarlığı datetimeoffset(n) değerinin duyarlığından büyük olduğunda, değer sığacak şekilde yukarı yuvarlanır. Aşağıdaki örnek, bir değeri türe time(4)datetimeoffset(3) dönüştürmenin sonuçlarını gösterir.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetimeoffset DATETIMEOFFSET(3) = @time;
SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset';
Sonuç kümesi aşağıdadır.
@time @datetimeoffset
------------- ------------------------------
12:15:04.1237 1900-01-01 12:15:04.124 +00:00
datetime2(n)'e dönüştürülürken, tarih '1900-01-01' olarak ayarlanır, saat bileşeni kopyalanır ve saat dilimi uzaklığı 00:00 olarak ayarlanır.
Datetime2(n) değerinin kesirli saniye duyarlığı time(n) değerinden büyük olduğunda, değer sığacak şekilde yukarı yuvarlanır. Aşağıdaki örnekte, bir time(4) değerini datetime2(2) bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime2 DATETIME2(3) = @time;
SELECT @datetime2 AS '@datetime2', @time AS '@time';
Sonuç kümesi aşağıdadır.
@datetime2 @time
----------------------- -------------
1900-01-01 12:15:04.124 12:15:04.1237
Dize Değişmez Değerlerini Zamana Dönüştürme(n)
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çiminde olacaktır. Aşağıdaki tabloda, bir dize değişmez değerini zaman veri türüne dönüştürme kuralları gösterilmektedir.
| Giriş dizesi değişmez değeri | Dönüşüm Kuralı |
|---|---|
| ODBC TARIHI | ODBC dize değişmez değerleri datetime veri türüne eşlenir. ODBC DATETIME değişmez değerlerinden zaman türlerine yapılan tüm atama işlemleri, dönüştürme kuralları tarafından tanımlanan tarih saat ve bu tür arasında örtük bir dönüştürmeye neden olur. |
| ODBC ZAMANI | Yukarıdaki ODBC TARİh kuralına bakın. |
| ODBC TARIH SAATI | Yukarıdaki ODBC TARİh kuralına bakın. |
| Sadece DATE | Varsayılan değerler sağlanır. |
| SADECE ZAMAN | Trivial |
| Sadece SAAT DILİMİ | Varsayılan değerler sağlanır. |
| TARİh + SAAT | Giriş dizesinin TIME bölümü kullanılır. |
| TARİh + SAAT DILIMI | İzin verilmiyor. |
| SAAT + SAAT DILIMI | Giriş dizesinin TIME bölümü kullanılır. |
| TARİh + SAAT + SAAT DILIMI | Yerel DATETIME öğesinin TIME bölümü kullanılır. |
Examples
A. Tarih ve saat Veri Türlerini Karşılaştırma
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';
| 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 |
B. Time(7) Sütununa Geçerli Saat Dizesi Değişmez Değerleri Ekleme
Aşağıdaki tabloda, veri türü saat (7) sütununa eklenebilen farklı dize değişmez değerleri ve ardından bu sütunda depolanan değerler listelenmiştir.
| Dize değişmez değer biçim türü | Eklenen dize değişmez değeri | depolanan time(7) değeri | Description |
|---|---|---|---|
| SQL Server | '01:01:01:123AM' | 01:01:01.1230000 | İki nokta üst üste (:) kesirli saniye duyarlığından önce geldiğinde ölçek üç konumu aşamaz veya bir hata oluşur. |
| SQL Server | '01:01:01.1234567' | 01:01:01.1234567 | veya PM belirtildiğinde, saat sabit veya PM olmadan 24 saatlik biçimde depolanır |
| SQL Server | '01:01:01.1234567 PM' | 13:01:01.1234567 | veya PM belirtildiğinde, saat sabit veya PM olmadan 24 saatlik biçimde depolanır |
| SQL Server | '01:01:01.1234567PM' | 13:01:01.1234567 | veya PM'den önceki bir alan isteğe bağlıdır. |
| SQL Server | '01AM' | 01:00:00.0000000 | Yalnızca saat belirtildiğinde, diğer tüm değerler 0 olur. |
| SQL Server | '01' | 01:00:00.0000000 | veya PM'den önceki bir alan isteğe bağlıdır. |
| SQL Server | '01:01:01' | 01:01:01.0000000 | Kesirli saniye duyarlığı belirtilmediğinde, veri türü tarafından tanımlanan her konum 0'dır. |
| ISO 8601 | '01:01:01.1234567' | 01:01:01.1234567 | ISO 8601'e uymak için veya PM yerine 24 saat biçimini kullanın. |
| ISO 8601 | '01:01:01.1234567 +01:01' | 01:01:01.1234567 | Girişte isteğe bağlı saat dilimi farkı (TZD) izin verilir ancak depolanmaz. |
C. Her tarih ve saat Tarih Türünün Sütunlarına Saat Dizesi Değişmez Değeri Ekleme
Aşağıdaki tabloda ilk sütun, ikinci sütunda gösterilen tarih veya saat veri türünün veritabanı tablo sütununa eklenecek saat dizesi değişmez değerini gösterir. Üçüncü sütun, veritabanı tablosu sütununda depolanacak değeri gösterir.
| Eklenen dize değişmez değeri | Sütun veri türü | Sütunda depolanan değer | Description |
|---|---|---|---|
| '12:12:12.1234567' | time(7) | 12:12:12.1234567 | Kesirli saniye duyarlığı sütun için belirtilen değeri aşarsa, dize hatasız kesilir. |
| '2007-05-07' | date | NULL | Herhangi bir zaman değeri INSERT deyiminin başarısız olmasına neden olur. |
| '12:12:12' | smalldatetime | 1900-01-01 12:12:00 | Kesirli saniye duyarlık değerleri INSERT deyiminin başarısız olmasına neden olur. |
| '12:12:12.123' | datetime | 1900-01-01 12:12:12.123 | Üç konumdan daha uzun herhangi bir ikinci duyarlık INSERT deyiminin başarısız olmasına neden olur. |
| '12:12:12.1234567' | datetime2(7) | 1900-01-01 12:12:12.1234567 | Kesirli saniye duyarlığı sütun için belirtilen değeri aşarsa, dize hatasız kesilir. |
| '12:12:12.1234567' | datetimeoffset(7) | 1900-01-01 12:12:12.1234567 +00:00 | Kesirli saniye duyarlığı sütun için belirtilen değeri aşarsa, dize hatasız kesilir. |