Aracılığıyla paylaş


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

Konu bağlantısı simgesi 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 */

Ayrıca bkz.

Başvuru

CAST ve CONVERT (Transact-SQL)