DATEPART (Transact-SQL)
Belirtilen date değerinin belirtilen datepart kısmını temsil eden bir tamsayı döndürür.
Tüm Transact-SQL tarih ve saat veri türleri ve işlevlerine genel bir bakış için, bkz. Tarih ve Saat veri türleri ve işlevler (Transact-sql).
Transact-SQL Sözdizim Kuralları
Sözdizimi
DATEPART ( datepart , date )
Bağımsız değişkenler
datepart
date işlevinin (bir tarih veya saat değeri) bir integer döndürülecek kısmıdır. Aşağıdaki tablo tüm geçerli datepart değişkenlerini listelemektedir. Kullanıcı tanımlı değişken karşılıkları geçerli değildir.datepart
Kısaltmalar
year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
weekday
dw
hour
hh
minute
mi, n
second
ss, s
millisecond
ms
microsecond
mcs
nanosecond
ns
TZoffset
tz
ISO_WEEK
isowk, isoww
date
Bir time, date, smalldatetime, datetime, datetime2 veya datetimeoffset değerine çözülebilen bir ifadedir. date bir ifade, bir sütun ifadesi, kullanıcı tanımlı bir değişken veya bir dize hazır değeri olabilir.Belirsizlikten kaçınmak için dört rakamlı yıllar kullanın. İki rakamlı yıllar hakkında daha fazla bilgi için, bkz. Yapılandırma iki basamaklı yıl kesme sunucu yapılandırma seçeneği.
Dönüş Türü
int
Dönüş Değeri
Her datepart ve kısaltmaları aynı değeri döndürür.
Döndürülen değer, oturum açan tarafından SET LANGUAGE ve Varsayılan dil sunucu yapılandırma seçeneği yapılandırmak ile belirlenen dil ortamına bağlıdır. date bazı biçimlerde bir dize hazır değeriyse, döndürülen değer SET DATEFORMAT kullanılarak belirtilen biçime dayanır. Tarih, tarih ve saat veri türünde bir sütun ifadesiyse, SET DATEFORMAT döndürülen değeri etkilemez.
Aşağıdaki tablo tüm datepart değişkenlerini, SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') deyiminin karşılık gelen dönüş değerleri ile listelemektedir. date değişkeninin veri türü datetimeoffset(7) veri türüdür. nanosecond datepart dönüş değeri 9 (.123456700) ölçekli bir dönüş değerine sahiptir ve son iki hane her zaman 00'dır.
datepart |
Dönüş değeri |
---|---|
year, yyyy, yy |
2007 |
quarter, qq, q |
4 |
month, mm, m |
10 |
dayofyear, dy, y |
303 |
day, dd, d |
30 |
week, wk, ww |
45 |
weekday, dw |
1 |
hour, hh |
12 |
minute, n |
15 |
second, ss, s |
32 |
millisecond, ms |
123 |
microsecond, mcs |
123456 |
nanosecond, ns |
123456700 |
TZoffset, tz |
310 |
week ve weekday datepart Değişkenleri
datepart week (wk, ww) veya weekday (dw) olduğunda, dönüş değeri, SET DATEFIRST kullanılarak ayarlanan değere bağlıdır.
Herhangi bir yılın 1 Ocak tarihi week datepart işlevinin başlangıç sayısını tanımlar; örneğin: DATEPART (wk, 'Jan 1, xxxx') = 1; burada xxxx herhangi bir yıldır.
Aşağıdaki tablo week ve weekday datepart, her SET DATEFIRST değişkeninin '2007-04-21 ' için dönüş değerini listelemektedir. 1 Ocak, 2007 yılının bir Pazar'ıdır. 21 Nisan, 2007 yılının bir Cumartesi'sidir. SET DATEFIRST 7, Sunday, ABD için varsayılan değerdir Türkçe.
SET DATEFIRST bağımsız değişken |
week döndürülen |
weekday döndürülen |
---|---|---|
1 |
16 |
6 |
2 |
17 |
5 |
3 |
17 |
4 |
4 |
17 |
3 |
5 |
17 |
2 |
6 |
17 |
1 |
7 |
16 |
7 |
year, month ve day datepart Değişkenleri
DATEPART (year, date), DATEPART (month, date) ve DATEPART (day, date) için döndürülen değerler, sırasıyla YEAR, MONTH ve DAY, f işlevleri tarafından döndürülenler ile aynıdır.
ISO_WEEK datepart
ISO 8601, haftaları numaralandırmak için bir sistem olan ISO haftaya olarak tarih sistemini içerir. Her hafta, Perşembe'nin olduğu yıl ile ilişkilendirilir. Örneğin, 2004'ün 1. haftası (2004W01) 29 Aralık 2003 Pazartesi ile 4 Ocak 2004 Pazar arasındadır. Bir yıldaki en yüksek hafta numarası 52 veya 53 olabilir. Bu numaralandırma biçimi tipik olarak Avrupa ülkelerinde/bölgelerinde kullanılmaktadır; diğer yerlerde az görülür.
Farklı ülkelerdeki/bölgelerdeki numaralandırma sistemi ISO standardına uymayabilir. Aşağıdaki tabloda gösterildiği gibi en az altı olasılık vardır
Haftanın ilk günü |
Yılın ilk yılı şunu içerir |
İki kez atanan haftalar |
Şurada/şunun tarafından kullanılır |
---|---|---|---|
Pazar |
1 Ocak, İlk Cumartesi, yılın 1–7 günü |
Evet |
ABD |
Pazartesi |
1 Ocak, İlk Pazar, yılın 1–7 günü |
Evet |
Avrupa'nın çoğu ve İngiltere |
Pazartesi |
4 Ocak, İlk Perşembe, yılın 4–7 günü |
Hayır |
ISO 8601, Norveç ve İsveç |
Pazartesi |
7 Ocak, İlk Pazartesi, yılın 7 günü |
Hayır |
|
Çarşamba |
1 Ocak, İlk Salı, yılın 1–7 günü |
Evet |
|
Cumartesi |
1 Ocak, İlk Cuma, yılın 1–7 günü |
Evet |
TZoffset
TZoffset (tz) dakika sayısı olarak döndürülür (işaretli). Aşağıdaki deyim 310 dakikalık bir saat dilimi uzaklığını döndürür.
SELECT DATEPART (TZoffset, 2007-05-10 00:00:01.1234567 +05:10);
SELECT DATEPART (TZoffset, 2007-05-10 00:00:01.1234567 +05:10);
datepart değişkeni TZoffset (tz) ise ve date değişkeni datetimeoffset veri türünde değilse, NULL döndürülür.
smalldatetime date Değişkeni
date smalldatetime olduğunda, saniyeler 00 olarak döndürülür.
Bir date Değişkeni olmayan bir datepart için Döndürülen Varsayılan Değer
date değişkeninin veri türü belirtilen datepart değerine sahip değilse, bu datepart için varsayılan değer döndürülür.
Örneğin, herhangi bir date veri türünün yıl-ay-gün varsayılan değeri 1900-01-01'dir. Aşağıdaki deyimin datepart için tarih kısmı değişkenleri, date için bir saat değişkeni vardır ve 1900, 1, 1, 1, 2 döndürür.
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(weekday, '12:10:30.123');
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(weekday, '12:10:30.123');
time veri türü için varsayılan saat-dakika-saniye 00:00:00'dır. Aşağıdaki deyimin datepart için saat kısmı değişkeni, date için bir tarih değişkeni vardır ve 0, 0, 0 döndürür.
SELECT DATEPART(hour, '2007-06-01')
,DATEPART(minute, '2007-06-01')
,DATEPART(second, '2007-06-01');
SELECT DATEPART(hour, '2007-06-01')
,DATEPART(minute, '2007-06-01')
,DATEPART(second, '2007-06-01');
Kesirli Saniyeler
Kesirli saniyeler aşağıdaki deyimlerde gösterildiği gibi döndürülür:
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700
Açıklamalar
DATEPART seçme listesinde, WHERE, HAVING, GROUP BY ve ORDER BY yan tümcelerinde kullanılabilir.
SQL Server 2012'da DATEPART, dize hazır değerlerini örtülü olarak bir datetime2 türüne çevirir. Bu, tarih bir dize olarak geçildiğinde DATEPART'ın YDM biçimini desteklemediği anlamına gelir. YDM biçimini kullanmak için dizeyi açıkça bir datetime veya smalldatetime türüne çevirmeniz gerekir.
Örnekler
Aşağıdaki örnek taban yılı döndürür. Taban yıl tarih hesaplamaları için yararlıdır. Örnekte, tarih bir sayı olarak belirtilir. SQL Server'ın 0'ı 1 Ocak 1900 olarak yorumladığına dikkat edin.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1 */
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1 */