DateTime (Transact-sql)

Günün bir saatini 24 saatlik temel kesirli saniye ile birlikte tarihi tanımlar.

[!NOT]

Kullanım time, date, datetime2ve datetimeoffsetveri türleri için yeni iş. Bu türler SQL Standardı ile uyumludur. Daha taşınabilirdirler. time, datetime2 ve datetimeoffset saniyelerde daha fazla kesinlik sağlar. datetimeoffsetGenel olarak dağıtılan uygulamaları için saat dilimi desteği sağlar.

DateTime açıklaması

Özellik

Değer

Sözdizimi

datetime

Kullanım

declare @ MyDatetimedatetime

create table Table1 (Sütun1 datetime)

Varsayılan dize hazır değeri biçimleri

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

Geçerli değildir

Tarih aralığı

1 Ocak 1753, ile 31 Aralık 9999

Saat aralığı

00:00:00 ile 23:59:59.997 arası

Saat dilimi uzaklığı aralığı

Hiçbiri

Öğe aralıkları

yyyy dört basamaklı bir yıl temsil 9999 aracılığıyla 1753 gelen olur.

MM, 01 ile 12 arasında değişen, belirtilen yılın bir ayını temsil eden iki rakamdır.

DD, aya bağlı olarak 01 ile 31 arasında değişen, belirtilen ayın bir gününü temsil eden iki rakamdır.

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

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

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

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

Karakter uzunluğu

19 pozisyonları en az 23 maksimum

Depolama boyutu

8 bayt

Kesinlik

.000,.003 Ya da.007 saniye artışlarla yuvarlak

Varsayılan değer

1900-01-01 00:00:00

Calendar

Gregoryen (tam yıl aralığını içermez.)

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 datetime

Aşağıdaki tablolarda listelenmektedir Desteklenen dize literal biçimleri datetime. odbc, haricinde datetimedize hazır olan tek tırnak işaretleri ('), örneğin, 'string_literaL'. Çevre ise us_english, dize hazır bilgi n 'string_literaL' biçiminde olmalıdır.

Sayısal

Açıklama

Tarih biçimleri:

[0] 4/15 / [19] 96--(AGY)

[0] 4 - 15-[19] 96--(AGY)

[0] 4,15.[19] 96--(AGY)

[0] 4 / [19] 96/15--(myd)

15 / [0] 4 / [19] 96--(gay)

15 / [19] 96 / [0] 4--(dym)

[19] 96/15 / [0] 4--(ydm)

[19] 96 / [0] 4/15--(YAG)

Saat biçimleri:

14:30

14:30[:20:999]

14:30[:20.9]

4 am

4 PM

Tarih verileri belirtilen sayısal bir ayda ile belirtebilirsiniz. Örneğin, 5/20/97, Mayıs 1997 yirminci günü temsil eder. Sayısal Tarih biçimini kullandığınızda, bir dize kullanır işareti (/), tire (-) veya ayırıcısı olarak nokta (.) eğik çizgi ay, gün ve yılı belirtin. Bu dize, aşağıdaki formda görünmesi gerekir:

  • numara ayırıcısı numara ayırıcısı numbertime] [time[]

Dil ayarlandığında us_english, AGY Tarih varsayılan sırasını olduğunu. Sen-ebilmek değişmek tarih sırası kullanılarak set dateformat deyimi.

set dateformat ayarı, tarih değerlerini nasıl yorumlandığını belirler. Sırası ayarı eşleşmezse, değerleri tarih olarak, çünkü onlar aralık dışında veya değerleri yanlış yorumlandığını yorumlanır değil. Örneğin, 12/10/08 dateformat ayarı bağlı altı tarihleri biri olarak yorumlanabilir. Bir dört yıl yıl olarak yorumlanır.

Alfabetik

Açıklama

Nis [il] [15] [,] 1996

Nis [il] 15] [19] 96

Nis [il] 1996 [15]

[15] Nis [il] [,] 1996

15 Nis [il] [,] [19] 96

15 [19] 96 Nis [il]

[15] 1996 Nis [il]

1996 NİS [IL] [15]

[15] 1996 NİS [IL]

Bir ay tam ay adı olarak belirtilen tarih verileri belirtebilirsiniz. Örneğin, Nisan ya da geçerli dil içinde belirtilen Mar ay kısaltması; virgül isteğe bağlıdır ve büyük harf sayılır.

İşte alfabetik tarih biçimleri kullanmak için bazı kurallar vardır:

  • Tarih ve Saat veri tek tırnak işaretleri (') içine alın. İngilizce dışındaki diller için kullanın n'

  • Köşeli ayraç içine alınmış karakterlerden isteğe bağlıdır.

  • Yılın son iki basamağını belirtirseniz, değeri son iki basamağını daha az değer Yapılandırma iki basamaklı yıl kesme sunucu yapılandırma seçeneğiyapılandırma seçeneği vardır aynı yüzyılda kesme yıl. Büyük veya bu değere eşit kesme bir yıl önce gelen yüzyılda değerlerdir. Örneğin, eğer iki basamaklı yıl kesme 2050 (varsayılan), ise 25 2025 yorumlandığını ve 50 yorumlandığını 1950. Belirsizlikten kaçınmak için dört rakamlı yıllar kullanın.

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

Ayın alfabetik formunda belirttiğinizde set dateformat oturum ayarı uygulanmaz.

ISO 8601

Açıklama

yyyy-mm-ddThh [.mmm]

DD [: SS [.mmm]]

Örnekler:

  • 2004-05-23T14:25:10

  • 2004-05-23T14:25:10.487

ISO 8601 biçiminde kullanmak için her öğenin biçiminde belirtmeniz gerekir. Bu da içerir T, iki nokta üst üste (:) ve nokta (.) biçiminde gösterilir.

Köşeli ayraçları ikinci bileşeni kısmını isteğe bağlı olduğunu belirtir. 24 Saatlik biçimde Saat bileşeni belirtildi.

t saat kısmını gösterir datetimedeğer.

ISO 8601 format kullanmanın avantajı, uluslararası bir standart belirsizliği belirtimiyle olmasıdır. Ayrıca bu biçim tarafından set dateformat etkilenmez veya Dil ayar.

Unseparated

Açıklama

DD: SS [.mmm]

ODBC

Açıklama

{ts ' 1998-05-02 01:23:56.123' }

{d ' 1990-10-02' }

{t ' 13: 33:41' }

odbc API odbc zaman damgası veri aramaları Tarih ve saat değerleri temsil etmek için çıkış sıralarını tanımlar. Bu odbc zaman damgası biçimi de desteklediği ole db dil tanımı (DBGUID-sql) tarafından desteklenen Microsoftiçin ole db sağlayıcısı SQL Server. ado, ole db ve odbc tabanlı API'leri kullanan uygulamalar bu odbc zaman damgası biçimi tarihleri ve saatleri temsil etmek için kullanabilirsiniz.

odbc zaman damgası çıkış sıralarını olan biçimi: { literal_type'constant_value' }:

  • literal_typeçıkış sırasını belirtir. Zaman damgaları var üç literal_typebelirleyicileri:

    • d = yalnızca tarihi

    • t = zaman sadece

    • TS = zaman damgası (time + tarihi)

  • 'constant_value' çıkış sırası değeridir. constant_valueBu biçimler için izlemeniz gereken literal_type.

    literal_typeconstant_value biçimi
    d YYYY-AA-GG
    t : dd: SS [.fff]
    TS YYYY-AA-GG: SS [.fff]

DateTime kesirli ikinci duyarlık yuvarlama

datetimedeğerler aşağıdaki tabloda gösterildiği gibi.000,.003 ya da.007 saniye artışlarla yuvarlanır.

Kullanıcı tarafından belirtilen değeri

Sistem saklı değer

01/01/98 23:59:59.999

1998-01-02 00:00:00.000

01/01/98 23:59:59.995

01/01/98 23:59:59.996

01/01/98 23:59:59.997

01/01/98 23:59:59.998

1998-01-01 23:59:59.997

01/01/98 23:59:59.992

01/01/98 23:59:59.993

01/01/98 23:59:59.994

1998-01-01 23:59:59.993

01/01/98 23:59:59.990

01/01/98 23:59:59.991

1998-01-01 23:59:59.990

ANSI ve ISO 8601 Uyumluluğu

datetimeANSI veya ISO 8601 uyumlu değil.

Tarih ve Saat Verilerini Dönüştürme

Tarih ve saat veri türlerini dönüştürdüğünüzde, SQL Server, tarih ve saat olarak algılayamadığı 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 datetime dönüştürme

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

date

Yıl ay ve gün kopyalanır. Saat bileşeni 00:00:00.000 için ayarlanır.

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

DECLARE @date date = '12-21-05';
DECLARE @datetime datetime = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
--Result
--@datetime               @date
------------------------- ----------
--2005-12-21 00:00:00.000 2005-12-21
DECLARE @date date = '12-21-05';
DECLARE @datetime datetime = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
--Result
--@datetime               @date
------------------------- ----------
--2005-12-21 00:00:00.000 2005-12-21

time(n)

Saat bileşeni kopyalanır ve Tarih bileşeni ayarlanır ' 1900-01-01'. Ne zaman kesirli duyarlığını time(n)üç basamak büyük 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 datetimedeğer.

DECLARE @time time(4) = '12:10:05.1234';
DECLARE @datetime datetime = @time;
SELECT @datetime AS '@datetime', @time AS '@time';
--Result
--@datetime               @time
------------------------- -------------
--1900-01-01 12:10:05.123 12:10:05.1234
--
--(1 row(s) affected)
DECLARE @time time(4) = '12:10:05.1234';
DECLARE @datetime datetime = @time;
SELECT @datetime AS '@datetime', @time AS '@time';
--Result
--@datetime               @time
------------------------- -------------
--1900-01-01 12:10:05.123 12:10:05.1234
--
--(1 row(s) affected)

smalldatetime

Saat ve dakika kopyalanır. Saniye ve Kesirli saniye, 0 olarak ayarlanır.

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

DECLARE @smalldatetime smalldatetime = '12-01-01 12:32';
DECLARE @datetime datetime = @smalldatetime;
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';
--Result
--@datetime               @smalldatetime
------------------------- -----------------------
--2001-12-01 12:32:00.000 2001-12-01 12:32:00
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '12-01-01 12:32';
DECLARE @datetime datetime = @smalldatetime;
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';
--Result
--@datetime               @smalldatetime
------------------------- -----------------------
--2001-12-01 12:32:00.000 2001-12-01 12:32:00
--
--(1 row(s) affected)

datetimeoffset(n)

Tarih ve Saat bileşenleri kopyalanır. Saat dilimini kesilir. Ne zaman kesirli duyarlığını datetimeoffset(n)değeri üç basamak büyük, değeri kesilecek.

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

DECLARE @datetimeoffset datetimeoffset(4) = '1968-10-23 12:45:37.1234 +10:0';
DECLARE @datetime datetime = @datetimeoffset;
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';
--Result
--@datetime               @datetimeoffset
------------------------- ------------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1234 +01:0
--
--(1 row(s) affected)
DECLARE @datetimeoffset datetimeoffset(4) = '1968-10-23 12:45:37.1234 +10:0';
DECLARE @datetime datetime = @datetimeoffset;
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';
--Result
--@datetime               @datetimeoffset
------------------------- ------------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1234 +01:0
--
--(1 row(s) affected)

datetime2(n)

Tarih ve Saat kopyalanır. Ne zaman kesirli duyarlığını datetime2(n)değeri üç basamak büyük, değeri kesilecek.

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

DECLARE @datetime2 datetime2(4) = '1968-10-23 12:45:37.1237';
DECLARE @datetime datetime = @datetime2;
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2';
--Result
--@datetime               @datetime2
------------------------- ------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
--
--(1 row(s) affected)
DECLARE @datetime2 datetime2(4) = '1968-10-23 12:45:37.1237';
DECLARE @datetime datetime = @datetime2;
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2';
--Result
--@datetime               @datetime2
------------------------- ------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
--
--(1 row(s) affected)

Örnekler

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';

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)