Saat (Transact-sql)

Bir gün bir zaman tanımlar. Zaman zaman dilimi bilinç olmadan ve 24 saatlik dayanmaktadır.

Saat açıklama

Özellik

Değer

Sözdizimi

time [ (fractional second precision) ]

Kullanım

declare @ MyTimetime(7)

create table Table1 (Sütun1 time(7))

fractional seconds precision

Saniyeyi kesirli kısmı için basamak sayısını belirtir.

Bu 7 ile 0 arasında bir tamsayı olabilir.

Varsayılan kesirli duyarlık 7 (100ns)'dir.

Varsayılan dize hazır bilgi biçimi

(aşağı düzey istemci için kullanılır)

: dd: SS [. nnnnnnn]

Daha fazla bilgi için bkz: alt düzey istemciler için "geriye dönük uyumluluğu" izleyen bölümde...

Aralık

00:00:00.0000000 ile 23:59:59.9999999 arası

Öğe aralıkları

hh, 0 ile 23 arasında değişen, saati temsil eden iki rakamdır.

mm, 0 ile 59 arasında değişen, dakikayı temsil eden iki rakamdır.

ss, 0 ile 59 arasında değişen, saniyeyi temsil eden iki rakamdır.

n * Kesirli saniye temsil 9999999 için 0 arasında değişen yedi basamak sıfırdır.

Karakter uzunluğu

8 pozisyonları en az (SS) için en fazla 16 (SS. nnnnnnn)

Duyarlık, ölçek

(kullanıcı yalnızca ölçek belirtir)

Belirtilen ölçekSonuç (duyarlık, ölçek)Sütun uzunluğu (bayt)Kesirli saniye duyarlık
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7

Depolama boyutu

Sabit, 5 bayt ile 100ns kesirli ikinci duyarlık varsayılan varsayılandır.

Kesinlik

100 nanosaniye şeklindedir

Varsayılan değer

00:00:00

Bu değer eklenmiş saat bölümü örtük dönüştürme için kullanılan dateiçin datetime2veya datetimeoffset.

Kullanıcı tanımlı kesirli saniye kesinliği

Evet

Saat dilimi uzaklığı uyumluluğu ve koruması

Hayır

Yaz saati uygulaması uyumluluğu

Hayır

Desteklenen dize Literal biçimleri için zaman

Aşağıdaki tablo geçerli dize hazır bilgi biçimleri gösterir timeveri türü.

SQL Server

Açıklama

SS: dd [: ss] [: Kesirli saniye] [am] [pm]

SS: dd [: ss] [.fractional saniye] [am] [pm]

hhAM [pm]

SS am [pm]

am 0 temsil after midnight (PM), ne olursa olsun Saat Saat değeri belirtilir. pm 0 saat eşit olduğunda belirtilemez.

Ne am ya da pm belirtilirse Saat değerleri üzerinden 11 01 öğleden önce Saat temsil eder. Öğleden önce saat değerleri temsil zaman am belirtilir. pm belirtilirse, öğleden sonra saat değerleri temsil eder.

Saat değeri 12 am ya da pm belirtilirse, öğle saatlerinde başlayan Saat temsil eder. Eğer am belirtilirse, gece yarısı başlayan Saat temsil eder. pm belirtilirse, öğle saatlerinde başlar Saat temsil eder. Örneğin, 12: 01 pm olarak 1201: 1 dakika sonra öğlen, olmasıdır; ve bir dakika sonra gece yarısı 12: 01 am. 12: 01 am belirterek 0001: ya da 00: 01 am belirterek aynıdır.

am veya pm belirtilmezse, öğleden sonra saat 13-23 Saat değerleri temsil eder. Değerleri de am ne zaman belirtilen öğleden sonra Saat temsil eder. am 13-23 Saat değeri olduğunda belirtilemez.

Bir 24 Saat değeri geçerli değil. Gece yarısı temsil etmek için 12: 00 am veya 00: 00 kullanın.

Milisaniye ya da üste öncesinde (:) veya nokta (.). İki nokta kullanılırsa, sayı binde duyarlığıyla--in-a-ikinci anlamına gelir. Bir süre kullanılırsa, onda--in-a-ikinci bir basamak anlamına gelir, iki basamak salise--in-a-ikinci demek ve binde duyarlığıyla--in-a-ikinci üç basamak demek. Örneğin, 20 12:30:20:1 gösterir ve -binde saniye geçmiş 12: 30; 12:30:20.1 20 gösterir ve onda biri saniye geçmiş 12: 30.

ISO 8601

Notlar

SS

SS: dd [: ss] [.fractional saniye]

  • hh 14 Saat Saat dilimi uzaklığı sayısını temsil eden 0 arasında değişen iki basamağıdır.

  • Ek saat dilimi uzaklığı dakika sayısını temsil eden 59 için 0 arasında değişen iki basamak, AA olur.

ODBC

Notlar

{t ': SS [.fractional saniye]'}

Belirli odbc API.

Çalışan SQL Server 2012gibi SQL Server 2005.

ANSI ve ISO 8601 standartları ile uyumluluk

24 Saat gece yarısı ve artık ikinci üzerinde 59 ISO 8601 (5.3.2 ve 5.3) tarafından tanımlandığı gibi gösteren kullanarak değil geriye dönük için desteklenen ve varolan Tarih ve saat türleri ile tutarlı.

(Alt düzey istemci kullanılır) varsayılan dize hazır bilgi biçimi SS tanımlanan sql standart formu ile hizalanır [. nnnnnnn]. Bu biçim ISO 8601 tanımı için kesirli saniye dışında zaman benzer.

Aşağı düzey istemciler için geriye dönük uyumluluk

Bazı alt düzey istemci desteği time, date, datetime2ve datetimeoffset veri türlerini. Aşağıdaki tablo arasındaki üst düzey bir örneğini türü eşleme gösterir SQL Serverve aşağı düzey istemciler.

SQL Server 2012veri türü

Alt düzey istemci için varsayılan dize hazır bilgi biçimi geçti

Alt düzey odbc

Alt düzey oledb

Alt düzey odbc

Alt düzey SQLCLIENT

time

: dd: SS [. nnnnnnn]

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

date

YYYY-AA-GG

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

datetime2

yyyy-AA-GG: SS [. nnnnnnn]

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

datetimeoffset

yyyy-AA-GG: SS [. nnnnnnn] [+ |-] SS: dd

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ürleri için dönüştürdüğünüzde SQL Servercant tanımak Tarih veya saat olarak tüm değerleri reddeder. Tarih ve Saat veri ile cast ve convert işlevlerini kullanma hakkında daha fazla bilgi için bkz.CAST ve CONVERT (Transact-SQL)

Time(n) veri türü diğer Tarih ve saat türleri için dönüştürme

Aşağıdaki tabloda ne olacağı açıklanır ne zaman bir timeveri türü diğer Tarih ve Saat veri türleri dönüştürülür.

Değerin dönüştürüleceği veri türü

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

time(n)

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

Aşağıdaki örnek dönüştürme sonuçlarını gösterir bir time(4)değeri bir time(3)değer.

DECLARE @timeFrom time(4) = '12:34:54.1234';
DECLARE @timeTo time(3) = @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)
DECLARE @timeFrom time(4) = '12:34:54.1234';
DECLARE @timeTo time(3) = @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 hata iletisi 206 geçirilen: "Operand türü clash: tarihi, zaman uyumlu değil".

datetime

Saat, dakika ve ikinci değerler kopyalanır; ve Tarih bileşeni ayarlanır ' 1900-01-01'. Ne zaman Kesirli saniye duyarlık time(n)değeri üç basamak büyük datetimesonucu kesildi.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir time(4)değeri bir datetimedeğer.

DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetime 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)
DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetime 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

' 1900 Tarih ayarlanır-01-01' ve Saat ve dakika değerler kopyalanır. Saniye ve Kesirli saniye, 0 olarak ayarlanır.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir time(4)değeri bir smalldatetimedeğer.

DECLARE @time time(4) = '12:15:04.1234';
DECLARE @smalldatetime 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)
DECLARE @time time(4) = '12:15:04.1234';
DECLARE @smalldatetime 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)

' 1900 Tarih ayarlanır-01-01' ve zaman kopyalanır. Saat dilimi uzaklığı ayarlamak için + 00: 00. Ne zaman Kesirli saniye duyarlık time(n)değeri duyarlılığı büyük datetimeoffset(n)değeri sığdırmak için kesirli kısmı.

Aşağıdaki örnek dönüştürme sonuçlarını gösterir bir time(4)değeri bir datetimeoffset(3)türü.

DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetimeoffset datetimeoffset(3) = @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)
DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetimeoffset datetimeoffset(3) = @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)

' 1900 Tarih ayarlanır-01-01', Saat bileşeni kopyalanır ve saat dilimi uzaklığı 00: 00 olarak ayarlanır. Ne zaman Kesirli saniye duyarlık datetime2(n)değeri daha büyük time(n)değer, değer sığacak şekilde kesilecek.

Aşağıdaki örnek dönüştürme sonuçlarını gösterir bir time(4)değeri bir datetime2(2)değer.

DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetime2 datetime2(3) = @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)
DECLARE @time time(4) = '12:15:04.1234';
DECLARE @datetime2 datetime2(3) = @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)

Dize hazır bilgi time(n) için dönüştürme

Eğer tüm parçaları dizeleri geçerli biçimlerde dönüşümleri dize hazır bilgi Tarih ve saat türleri için izin verilir. Aksi takdirde, bir çalışma zamanı hatası ortaya çıkar. Örtülü Dönüştürmelere veya bir stil, dize hazır bilgi Tarih ve saat türleri belirtmeyen açık dönüştürmeleri geçerli oturumu varsayılan biçiminde olacaktır. Aşağıdaki tablo bir dize dönüştürme kuralları için hazır gösterir timeveri türü.

Giriş dize hazır bilgi

Dönüştürme kural

ODBC TARİH

odbc dize hazır bilgi için eşleştirilir datetimeveri türü. odbc DATETIME rakamları herhangi bir atama işlemi timetürleri arasında bir örtük dönüştürme neden olur datetimeve bu tür dönüştürme kuralları tarafından tanımlanan.

ODBC ZAMAN

Bkz: odbc tarih kuralı yukarıda.

ODBC DATETIME

Bkz: odbc tarih kuralı yukarıda.

Yalnızca Tarih

Varsayılan değerler sağlanır.

Yalnızca Tarih

Önemsiz

Sadece DİLİMİMİ

Varsayılan değerler sağlanır.

TARİH + SAAT

Giriş dizesi zaman parçası kullanılır.

TARİHİ + TIMEZONE

İzin verilmiyor.

TIMEZONE_TIME

Giriş dizesi zaman parçası kullanılır.

TARİH + SAAT + TIMEZONE

Yerel DATETIME zaman parçasını kullanılacak.

Örnekler

A.Tarih ve Saat veri türlerini karşılaştırma

Aşağıdaki örnek, her bir dize vuran sonuçlarını karşılaştırır dateve timeveri tü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';

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ü

Çıktı

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.Geçerli saati dize hazır bilgi a time(7) sütun ekleme

Aşağıdaki tabloda veri türünde bir sütuna eklenen farklı dize hazır bilgi time(7)sonra bu sütunda depolanan değerleri ile.

Dize hazır bilgi biçimi türü

Eklenen dize hazır bilgi

depolanan time(7) değeri

Açıklama

SQL Server

'01:01:01:123 AM'

01:01:01.1230000

Zaman iki nokta (:) gelir önce Kesirli saniye duyarlık, ölçek üç pozisyonları geçemez veya hata artırılacaktır.

SQL Server

'01:01:01.1234567 AM'

01:01:01.1234567

am veya pm belirtildiğinde, saati 24 Saat biçiminde am veya pm değişmez olmadan saklanır

SQL Server

'01:01:01.1234567 AM'

13:01:01.1234567

am veya pm belirtildiğinde, saati 24 Saat biçiminde am veya pm değişmez olmadan saklanır

SQL Server

'01:01:01.1234567 AM'

13:01:01.1234567

am veya pm önce boşluk isteğe bağlıdır.

SQL Server

'01 AM'

01:00:00.0000000

Yalnızca Saat belirtildiğinde, diğer tüm değerlerin 0 vardır.

SQL Server

'01 AM'

01:00:00.0000000

am veya pm önce boşluk isteğe bağlıdır.

SQL Server

'01:01:01'

01:01:01.0000000

Kesirli saniye duyarlık belirtildiğinde veri türü tarafından tanımlanan her bir pozisyon 0'dır.

ISO 8601

'01:01:01.1234567'

01:01:01.1234567

ISO 8601 ile uyum sağlamak için 24 Saat biçiminde am veya pm kullanın.

ISO 8601

'01:01:01.1234567 +01:01'

01:01:01.1234567

İsteğe bağlı zaman dilimi farkı (tzd) giriş izin verilir ancak değil depolanır.

C.Saat dize Literal her sütun tarih ve Saat türü Tarih ekleme

Aşağıdaki tabloda ilk sütunu bir saat dize bir veritabanı sütununu ikinci sütunda gösterilen Tarih ve Saat veri türü eklenecek hazır gösterir. Üçüncü sütunun veritabanı tablo sütunda depolanan değeri gösterir.

Eklenen dize hazır bilgi

Sütun veri türü

Sütunda depolanan değeri

Açıklama

'12:12:12.1234567'

time(7)

12:12:12.1234567

Kesirli saniye duyarlık sütunu için belirtilen değeri aşarsa, dize hatasız kesilecek.

'2007-05-07'

date

NULL

Herhangi bir zaman değeri INSERT deyimi başarısız olmasına neden olur.

'12:12:12'

smalldatetime

1900-01-01 12:12:00

Kesirli saniye duyarlık değeri INSERT deyimi başarısız olmasına neden olur.

'12:12:12.123'

datetime

1900-01-01 12:12:12.123

Üç pozisyonları uzun herhangi bir ikinci duyarlık INSERT deyimi başarısız olmasına neden olur.

'12:12:12.1234567'

datetime2(7)

1900-01-01 12:12:12.1234567

Kesirli saniye duyarlık sütunu için belirtilen değeri aşarsa, dize hatasız kesilecek.

'12:12:12.1234567'

datetimeoffset(7)

1900-01-01 12:12:12.1234567 +00:00

Kesirli saniye duyarlık sütunu için belirtilen değeri aşarsa, dize hatasız kesilecek.

Ayrıca bkz.

Başvuru

CAST ve CONVERT (Transact-SQL)