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
Analytics Platform Sistemi (PDW)
Microsoft Fabric'te SQL Veritabanı
24 saatlik saati temel alan kesirli saniyelerle günün saatiyle birleştirilen tarihi tanımlar.
Yeni çalışma için datetime kullanmaktan kaçının. Bunun yerine,
Description
| Property | Value |
|---|---|
| Syntax | DATETIME |
| Usage | DECLARE @MyDatetime DATETIME;CREATE TABLE Table1 (Column1 DATETIME); |
| Varsayılan dize değişmez değerleri biçimleri (alt düzey istemci için kullanılır) | Uygulanamaz |
| Tarih aralığı | 1753-01-01 (1 Ocak 1753) - 9999-12-31 (31 Aralık 9999) |
| Zaman aralığı | 00:00:00- 23:59:59.997 |
| Saat dilimi uzaklık aralığı | None |
| Öğe aralıkları |
yyyy, bir yılı temsil eden 1753 ile 9999 arasındaki dört basamaktır.MM, belirtilen yıldaki bir ayı temsil eden 01 ile 12arasında değişen iki basamaktır.dd, belirtilen ayın gününü temsil eden aya bağlı olarak 01 ile 31 arasında değişen iki basamaktır.HH, saati temsil eden 00 ile 23arasında değişen iki basamaktır.mm, dakikayı temsil eden 00 ile 59arasında değişen iki basamaktır.ss, ikinciyi temsil eden 00 ile 59arasında değişen iki basamaktır.n*, kesirli saniyeleri temsil eden 0 ile 999arasında değişen sıfır ile üç basamaktır. |
| Karakter uzunluğu | 19 konum en az 23 en fazla |
| Depolama boyutu | 8 bayt |
| Accuracy |
.000, .003veya .007 saniyelik artışlara yuvarlandı |
| Varsayılan değer | 1900-01-01 00:00:00 |
| Calendar | Gregoryen (yılların tamamını içerir) |
| kullanıcı tanımlı kesirli ikinci duyarlık |
No |
| Saat dilimi fark ve koruma | No |
| Gün ışığından yararlanmaya duyarlı | No |
Datetime için desteklenen dize değişmez değerleri biçimleri
Aşağıdaki tablolarda, datetimeiçin desteklenen dize değişmez değerleri listelenmektedir. ODBC dışında, tarih saat dize değişmez değerleri tek tırnak içindedir ('), örneğin, 'string_literaL'. Ortam us_englishdeğilse, dize değişmez değerleri N'string_literaL'Unicode biçiminde olmalıdır.
Sayısal format
Tarih verilerini belirtilen bir sayısal ay ile belirtebilirsiniz. Örneğin, 5/20/97 Mayıs 1997'nin yirminci gününü temsil eder. Sayısal tarih biçimi kullandığınızda, ay, gün ve yılı, ayırıcı olarak eğik çizgi (/), kısa çizgi (-) veya nokta (.) kullanan bir dizede belirtin. Bu dize aşağıdaki biçimde görünmelidir:
<number separator number separator number [time] [time]>
Dil us_englisholarak ayarlandığında, tarihin varsayılan sırası mdy (ay, gün, yıl) olur.
SET DATEFORMAT deyimini kullanarak tarih sırasını değiştirebilirsiniz.
SET DATEFORMAT ayarı, tarih değerlerinin nasıl yorumleneceğini belirler. Düzen ayarla eşleşmiyorsa, değerler tarih olarak yorumlanmamıştır. Sıra dışı tarihler, aralık dışında veya yanlış değerlerle yanlış yorumlanabilir. Örneğin 12/10/08, DATEFORMAT ayarına bağlı olarak altı tarihten biri olarak yorumlanabilir. Dört bölümlü yıl yıl olarak yorumlanır.
| Tarih biçimi | Order |
|---|---|
[0]4/15/[19]96 |
mdy |
[0]4-15-[19]96 |
mdy |
[0]4.15.[19]96 |
mdy |
[0]4/[19]96/15 |
myd |
15/[0]4/[19]96 |
dmy |
15/[19]96/[0]4 |
dym |
[19]96/15/[0]4 |
ydm |
[19]96/[0]4/15 |
ymd |
| Saat biçimi |
|---|
14:30 |
14:30[:20:997] |
14:30[:20.9] |
4am |
4 PM |
Alfabetik format
Tam ay adı olarak belirtilen bir ay olan tarih verilerini belirtebilirsiniz. Örneğin, Aprilveya geçerli dilde belirtilen Apray kısaltması. Virgüller isteğe bağlıdır ve büyük harf kullanımı yoksayılır.
Alfabetik tarih biçimlerini kullanmaya yönelik bazı yönergeler şunlardır:
Tarih ve saat verilerini tek tırnak içine alın (
'). İngilizce dışındaki diller içinN''kullanın.Köşeli ayraç içine alınmış karakterler isteğe bağlıdır.
Yılın yalnızca son iki basamağını belirtirseniz, iki basamaklı yıl kesme yapılandırma seçeneğinin değerinin son iki basamağını aşan değerler kesme yılıyla aynı yüzyılda yer alır. Bu seçeneğin değerinden büyük veya buna eşit değerler, kesme yılından önce gelen yüzyıldadır. Örneğin, iki basamaklı yıl kesme
2050(varsayılan) ise,252025olarak yorumlanır ve501950olarak yorumlanır. Belirsizliği önlemek için dört basamaklı yılları kullanın.Gün eksikse, ayın ilk günü sağlanır.
SET DATEFORMAToturum ayarı, ayı alfabetik biçimde belirttiğinizde uygulanmaz.
| Alphabetical |
|---|
Apr[il] [15][,] 1996 |
Apr[il] 15[,] [19]96 |
Apr[il] 1996 [15] |
[15] Apr[il][,] 1996 |
15 Apr[il][,][19]96 |
15 [19]96 apr[il] |
[15] 1996 apr[il] |
1996 APR[IL] [15] |
1996 [15] APR[IL] |
ISO 8601 biçimi
ISO 8601 biçimini kullanmak için, T, iki nokta üst üste (:) ve biçimde gösterilen nokta (.) dahil olmak üzere biçimdeki her öğeyi belirtmeniz gerekir.
Köşeli ayraçlar, ikinci bileşenin kesirinin isteğe bağlı olduğunu gösterir. Zaman bileşeni 24 saatlik biçimde belirtilir.
T, datetime değerinin saat bölümünün başlangıcını gösterir.
ISO 8601 biçimini kullanmanın avantajı, kesin belirtimlere sahip uluslararası bir standart olmasıdır. Ayrıca, bu biçim SET DATEFORMAT veya SET LANGUAGE ayarından etkilenmez.
Examples:
2004-05-23T14:25:102004-05-23T14:25:10.487
| ISO 8601 |
|---|
yyyy-MM-ddTHH:mm:ss[.mmm] |
yyyyMMdd[ HH:mm:ss[.mmm]] |
Ayrılmamış format
Bu biçim ISO 8601 biçimine benzer, ancak tarih ayırıcı içermez.
| Unseparated |
|---|
yyyyMMdd HH:mm:ss[.mmm] |
ODBC formatı
ODBC API'si, ODBC'nin zaman damgası verilerini çağırdığı tarih ve saat değerlerini temsil eden kaçış dizilerini tanımlar. Bu ODBC zaman damgası biçimi, SQL Server için Microsoft OLE DB sağlayıcısı tarafından desteklenen OLE DB dil tanımı (DBGUID-SQL) tarafından da desteklenir. ADO, OLE DB ve ODBC tabanlı API'leri kullanan uygulamalar, tarihleri ve saatleri göstermek için bu ODBC zaman damgası biçimini kullanabilir.
ODBC zaman damgası kaçış sıraları şu biçimdedir: { <literal_type> '<constant_value>' }:
<literal_type>kaçış dizisinin türünü belirtir. Zaman damgalarının üç<literal_type>tanımlayıcısı vardır:-
d= yalnızca tarih -
t= yalnızca saat -
ts= zaman damgası (saat + tarih)
-
<constant_value>kaçış dizisinin değeridir.<constant_value>her<literal_type>için şu biçimleri izlemelidir:-
d:yyyy-MM-dd -
t:hh:mm:ss[.fff] -
ts:yyyy-MM-dd HH:mm:ss[.fff]
-
| ODBC |
|---|
{ ts '1998-05-02 01:23:56.123' } |
{ d '1990-10-02' } |
{ t '13:33:41' } |
Tarih saat kesirli ikinci duyarlık yuvarlama
tarih saat değerleri, aşağıdaki örnekte gösterildiği gibi .000, .003veya .007 saniyelik artışlara yuvarlanır.
SELECT '01/01/2024 23:59:59.999' AS [User-specified value],
CAST('01/01/2024 23:59:59.999' AS DATETIME) AS [System stored value]
UNION SELECT '01/01/2024 23:59:59.998', CAST('01/01/2024 23:59:59.998' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.997', CAST('01/01/2024 23:59:59.997' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.996', CAST('01/01/2024 23:59:59.996' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.995', CAST('01/01/2024 23:59:59.995' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.994', CAST('01/01/2024 23:59:59.994' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.993', CAST('01/01/2024 23:59:59.993' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.992', CAST('01/01/2024 23:59:59.992' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.991', CAST('01/01/2024 23:59:59.991' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.990', CAST('01/01/2024 23:59:59.990' AS DATETIME);
Sonuç kümesi aşağıdadır.
| Kullanıcı tarafından belirlenen değer | Sistem tarafından depolanan değer |
|---|---|
01/01/2024 23:59:59.999 |
2024-01-02 00:00:00.000 |
01/01/2024 23:59:59.99801/01/2024 23:59:59.99701/01/2024 23:59:59.99601/01/2024 23:59:59.995 |
2024-01-01 23:59:59.997 |
01/01/2024 23:59:59.99401/01/2024 23:59:59.99301/01/2024 23:59:59.992 |
2024-01-01 23:59:59.993 |
01/01/2024 23:59:59.99101/01/2024 23:59:59.990 |
2024-01-01 23:59:59.990 |
ANSI ve ISO 8601 uyumluluğu
datetime ANSI veya ISO 8601 uyumlu değildir.
Tarih ve saat verilerini dönüştürme
Tarih ve saat veri türlerine dönüştürdüğünüzde, Veritabanı Altyapısı tarih veya saat olarak tanıyamayan tüm değerleri reddeder.
CAST ve CONVERT işlevlerini tarih ve saat verileriyle kullanma hakkında bilgi için bkz. CAST ve CONVERT.
Diğer tarih ve saat türlerini tarih saat veri türüne dönüştürme
Bu bölümde, diğer tarih ve saat veri türleri datetime veri türüne dönüştürüldüğünde ne olduğu açıklanır.
Dönüştürme tarihtenolduğunda, yıl, ay ve gün kopyalanır. Zaman bileşeni 00:00:00.000olarak ayarlanır. Aşağıdaki kod, bir DATE değerini DATETIME bir değere dönüştürmenin sonuçlarını gösterir.
DECLARE @date DATE = '12-21-16';
DECLARE @datetime DATETIME = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
Sonuç kümesi aşağıdadır.
@datetime @date
------------------------ -----------
2016-12-21 00:00:00.000 2016-12-21
Önceki örnekte bölgeye özgü bir tarih biçimi (MM-DD-YY) kullanılır.
DECLARE @date DATE = '12-21-16';
Örneği bölgenizin biçimiyle eşleşecek şekilde güncelleştirmeniz gerekir.
Ayrıca örneği ISO 8601 uyumlu tarih biçimiyle (yyyy-MM-dd) tamamlayabilirsiniz. Örneğin:
DECLARE @date DATE = '2016-12-21';
DECLARE @datetime DATETIME = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
DönüştürmeTIME(4) değerini DATETIME bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @time TIME(4) = '12:10:05.1237';
DECLARE @datetime DATETIME = @time;
SELECT @datetime AS '@datetime', @time AS '@time';
Sonuç kümesi aşağıdadır.
@datetime @time
------------------------ --------------
1900-01-01 12:10:05.123 12:10:05.1237
Dönüştürme smalldatetimeolduğunda, saatler ve dakikalar kopyalanır. Saniyeler ve kesirli saniyeler 0olarak ayarlanır. Aşağıdaki kod, bir SMALLDATETIME değerini DATETIME bir değere dönüştürmenin sonuçlarını gösterir.
DECLARE @smalldatetime SMALLDATETIME = '12-01-16 12:32';
DECLARE @datetime DATETIME = @smalldatetime;
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';
Sonuç kümesi aşağıdadır.
@datetime @smalldatetime
------------------------ --------------------
2016-12-01 12:32:00.000 2016-12-01 12:32:00
Dönüştürme datetimeoffset(n)olduğunda, tarih ve saat bileşenleri kopyalanır. Saat dilimi kesilir.
datetimeoffset(n) değerinin kesirli duyarlığı üç basamaktan büyükse, değer kesilir. Aşağıdaki örnekte, bir DATETIMEOFFSET(4) değerini DATETIME bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @datetimeoffset DATETIMEOFFSET(4) = '1968-10-23 12:45:37.1234 +10:0';
DECLARE @datetime DATETIME = @datetimeoffset;
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';
Sonuç kümesi aşağıdadır.
@datetime @datetimeoffset
------------------------ -------------------------------
1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237 +10:0
Dönüştürme datetime2(n)olduğunda, tarih ve saat kopyalanır.
datetime2(n) değerinin kesirli duyarlığı üç basamaktan büyükse, değer kesilir. Aşağıdaki örnekte, bir DATETIME2(4) değerini DATETIME bir değere dönüştürmenin sonuçları gösterilmektedir.
DECLARE @datetime2 DATETIME2(4) = '1968-10-23 12:45:37.1237';
DECLARE @datetime DATETIME = @datetime2;
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2';
Sonuç kümesi aşağıdadır.
@datetime @datetime2
------------------------ -------------------------
1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
Examples
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('2024-05-08 12:35:29.1234567 +12:15' AS TIME(7)) AS 'time',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
CAST('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
CAST('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2(7)) AS 'datetime2',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET(7)) AS 'datetimeoffset';
Sonuç kümesi aşağıdadır.
| Veri türü | Output |
|---|---|
time |
12:35:29.1234567 |
date |
2024-05-08 |
smalldatetime |
2024-05-08 12:35:00 |
datetime |
2024-05-08 12:35:29.123 |
datetime2 |
2024-05-08 12:35:29.1234567 |
datetimeoffset |
2024-05-08 12:35:29.1234567 +12:15 |