tarihi (Transact-sql)

Bir tarihi tanımlar.

Açıklama tarihi

Özellik

Değer

Sözdizimi

date

Kullanım

declare @ MyDatedate

create table Table1 (Sütun1 date)

Varsayılan dize hazır bilgi biçimi

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

YYYY-AA-GG

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

Aralık

0001-01-01 ile 9999-12-31 arası

1 Ocak 1 a.d. Aralık 31, 9999 m.s.

Öğe aralıkları

yyyy 0001 gelen dört basamaklı bir yıl temsil 9999 olur.

mm belirtilen yıldaki ay gösteren 12 01 iki basamaktan oluşur.

dd, belirtilen ayın gününü gösteren ay, bağlı 31 01-iki basamaktan oluşur.

Karakter uzunluğu

10 pozisyon

Duyarlık, ölçek

10, 0

Depolama boyutu

Sabit 3 bayt

Depolama yapısı

1, 3-bayt tamsayı tarihini depolar.

Kesinlik

Bir gün

Varsayılan değer

1900-01-01

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

Calendar

Gregoryen

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

Hayır

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

Hayır

Yaz saati uygulaması uyumluluğu

Hayır

Desteklenen dize Literal biçimleri için tarihi

Aşağıdaki tablolarda geçerli dize hazır bilgi biçimleri göster dateveri türü.

Sayısal

Açıklama

mdy                         

[m] m/dd/yy [yy]       

[m] m - dd-[yy] yy       

[m]m.dd.[yy] yy       

MYD                         

mm / [yy] yy/GG       

mm-[yy] yy/GG       

[m. [yy] yy.dd m]       

Gay                         

dd / [m] m / [yy] yy       

dd-[m] m [yy] yy       

gg [m] m. [yy] yy       

dym                         

gg / yy [yy] / [m] m       

dd-[yy] yy-[m] m       

gg [yy] yy.[m] m       

Yag                         

[yy] yy / [m] m/GG       

[yy] yy-[m] m-dd       

[yy] yy-[m] m-dd       

[m] m, GG ve [yy] yy temsil ay, gün ve yıl içinde bir dize ile eğik çizgi işareti (/), tire (-) veya ayırıcısı olarak nokta (.).

Sadece dört veya iki basamaklı yıl desteklenir. Dört basamaklı yıl mümkün olduğunda kullanın. Dört basamaklı yıl olarak iki basamaklı yılları yorumlamak için kesme yılı gösteren tamsayı 0001 den 9999 belirtmek için kullanın Yapılandırma iki basamaklı yıl kesme sunucu yapılandırma seçeneği.

Aynı yüzyılda kesme yıl olarak bir iki basamaklı yıl kesme yılın son iki basamağını eşit veya daha az ise. Yüzyılda kesme bir yıl önce gelen bir iki basamaklı yıl kesme yılın son iki basamağını büyük olduğunu. Örneğin, iki basamaklı yıl kesme 2049 varsayılan ise, iki basamaklı yıl 49 2049 ve 50 1950 yorumlanan iki basamaklı yıl olarak yorumlanır.

Varsayılan tarih biçimi, geçerli dil ayarı tarafından belirlenir. Tarih biçimini kullanarak değiştirebileceğiniz Dil ve set dateformat deyimleri.

ydmBiçimi desteklenmiyor date.

Alfabetik

Açıklama

Sun [GG] [,] yyyy      

Pzt dd] [yy] yy      

Sun yyyy [GG]          

[GG] mon] yyyy      

DD Sun [,] [yy] yy       

gg [yy] yy Sun         

[GG] yyyy Sun         

yyyy Sun [GG]         

YYYY [GG] Thu         

montam ay adını veya geçerli dilde verilen ayın kısaltmasını temsil eder. Virgül isteğe bağlıdır ve büyük harf sayılır.

Belirsizlikten kaçınmak için dört rakamlı yıllar kullanın.

Ayın ilk günü, gün eksik varsa sağlanır.

ISO 8601

Açıklama

YYYY-AA-GG            

DD               

sql standardına ile aynıdır. Bu uluslararası bir standart tanımlanan tek biçimidir.

Unseparated

Açıklama

yyaagg [yy]            

YYYY [mm] [GG]          

dateVerileri, dört, altı veya sekiz basamaklı belirtilebilir. Altı veya sekiz haneli dize her zaman yorumlanır ymd. Ay ve gün her zaman iki basamak olmalıdır. Dört basamaklı dize yıl olarak yorumlanır.

ODBC

Açıklama

{d 'yyyy-aa-gg' }   

Belirli odbc API.

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

W3C xml biçimi

Açıklama

YYYY-mm-ddTZD      

Özellikle xml ve soap kullanım için desteklenir.

tzd olan saat dilimi göstergesi (z veya + SS: dd veya - hh: mm):

  • SS: dd Saat dilimi uzaklığı temsil eder. 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.

  • + (artı) veya -(eksi) saat dilimi uzaklığı zorunlu işareti. Bu saat dilimi uzaklığı eklendi veya Eşgüdümlü Evrensel Zaman (utc) Zaman zaman Yerel Saat edinmek için düşülen belirtir. Geçerli saat dilimi uzaklığı -14 aralığı: + 14 00: 00.

ANSI ve ISO 8601 Uyumluluğu

dateANSI sql standardında Gregoryen takvimi ile uyumludur: "Not 85 - Datetime veri türleri tarihleri Gregoryen biçiminde Tarih aralığı 0001–01–01 ce 0001–01–01 ce aracılığıyla depolanmasını sağlayacak."

Aşağı düzey istemciler için kullanılan varsayılan dize hazır bilgi biçimi yyyy-AA-GG tanımlanan sql standart form ile uyumludur Bu biçim, Tarih ISO 8601 tanımı aynıdır.

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).

Diğer Tarih ve saat türleri için dönüştürme tarihi

Aşağıdaki tabloda ne olacağı açıklanır ne zaman bir dateveri 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)

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

Tarih kopyalanır. Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datedeğeri bir datetimedeğer.

DECLARE @date date= '12-10-25';
DECLARE @datetime datetime= @date;
SELECT @date AS '@date', @datetime AS '@datetime';
--Result
--@date      @datetime
------------ -----------------------
--2025-12-10 2025-12-10 00:00:00.000
--
--(1 row(s) affected)
DECLARE @date date= '12-10-25';
DECLARE @datetime datetime= @date;
SELECT @date AS '@date', @datetime AS '@datetime';
--Result
--@date      @datetime
------------ -----------------------
--2025-12-10 2025-12-10 00:00:00.000
--
--(1 row(s) affected)

smalldatetime

Ne zaman datedeğerdir aralığındaki bir smalldatetime, Tarih bileşeni kopyalanır ve Saat bileşeni 00:00:00.000 için ayarlanır. Ne zaman datedeğerdir aralığı dışında bir smalldatetimedeğer, hata iletisi 242 geçirilen: "smalldatetime veri türü Tarih veri türü dönüştürme sonuçlandı içinde bir dışarı Aralık değeri."; ve smalldatetimedeğeri null olarak ayarlanır.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datedeğeri bir smalldatetimedeğer.

DECLARE @date date= '1912-10-25';
DECLARE @smalldatetime smalldatetime = @date;
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime';
--Result
--@date      @smalldatetime
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00
--
--(1 row(s) affected)
DECLARE @date date= '1912-10-25';
DECLARE @smalldatetime smalldatetime = @date;
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime';
--Result
--@date      @smalldatetime
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00
--
--(1 row(s) affected)

datetimeoffset(n)

Tarih kopyalanır ve saati ayarlamak için 00:00.0000000 + 00: 00.

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

DECLARE @date date = '1912-10-25';
DECLARE @datetimeoffset datetimeoffset(3) = @date;
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset';
--Result
--@date      @datetimeoffset
------------ ------------------------------
--1912-10-25 1912-10-25 00:00:00.000 +00:00
--
--(1 row(s) affected)
DECLARE @date date = '1912-10-25';
DECLARE @datetimeoffset datetimeoffset(3) = @date;
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset';
--Result
--@date      @datetimeoffset
------------ ------------------------------
--1912-10-25 1912-10-25 00:00:00.000 +00:00
--
--(1 row(s) affected)

datetime2(n)

Tarih bileşeni kopyalanır ve Saat bileşeni 00:00. 000000 ayarlanır.

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

DECLARE @date date = '1912-10-25'
DECLARE @datetime2 datetime2(3) = @date;
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)';
--Result
--@date      @datetime2(3)
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00.000
--
--(1 row(s) affected)
DECLARE @date date = '1912-10-25'
DECLARE @datetime2 datetime2(3) = @date;
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)';
--Result
--@date      @datetime2(3)
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00.000
--
--(1 row(s) affected)

Dize hazır bilgi Tarih 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 dateveri türü.

Giriş dize hazır bilgi

date

ODBC TARİH

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

ODBC ZAMAN

Bakın önceki odbc tarih kuralı.

ODBC DATETIME

Bakın önceki odbc tarih kuralı.

Yalnızca Tarih

Önemsiz

Yalnızca Tarih

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

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

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

TARİH + SAAT + TIMEZONE

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

Örnekler

Aşağıdaki örnek bir dizeyi dönüştürmenin sonuçlarını her tarih ve saat veri türü ile karşılaştırmaktadı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';

Sonuç kümesi buradadır.

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

Ayrıca bkz.

Başvuru

CAST ve CONVERT (Transact-SQL)