Aracılığıyla paylaş


zaman (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft 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.

Ayrıca Bkz.

CAST ve CONVERT (Transact-SQL)