Aracılığıyla paylaş


DATEPART (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı

Bu fonksiyon, belirtilen tarihin bir tam sayısını temsil eder.

Tüm Transact-SQL tarih ve saat veri türlerine ve işlevlerine genel bakış için bkz. Tarih ve Saat Veri Türleri ve İşlevleri (Transact-SQL).

Transact-SQL söz dizimi kuralları

Sözdizimi

DATEPART ( datepart , date )  

Arguments

datepart
Tarih argümanının DATEPART belirli kısmı tam sayı döndürecektir. Bu tabloda tüm geçerli tarih bölümü bağımsız değişkenleri listelenir.

Uyarı

DATEPARTdatepart argümanları için kullanıcı tanımlı değişken eşdeğerlerini kabul etmez.

datepart Abbreviations
yıl Yyy, yyyy
çeyrek qq, q
ay Mm, m
dayofyear Dy, y
gün dd, d
hafta wk, ww
hafta içi Dw
saat hh
dakika mi, n
saniye ss, s
milisaniye Ms
Microsecond Mcs
Içerir Ns
tzoffset tz
iso_week isowk, isoww

date
Aşağıdaki veri türlerinden birine çözümlenen bir ifade:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

TarihDATEPART için bir sütun ifadesi, ifade, dize değişmez değeri veya kullanıcı tanımlı değişken kabul eder. Belirsizlik sorunlarını önlemek için dört basamaklı yılları kullanın. İki basamaklı yıllar hakkında bilgi için bkz. İki basamaklı yıl kesme Sunucusu Yapılandırma Seçeneğini yapılandırma .

Dönüş Türü

int

Dönüş Değeri

Her datepart ve kısaltmaları aynı değeri döndürür.

Dönüş değeri, SET LANGUAGE kullanılarak belirlenen dil ortamına ve girişin varsayılan dili Yapılandırma Sunucusu Yapılandırma Seçeneğine bağlıdır. Döndürme değeri, tarih bazı formatların bir dizi literali ise, SET DATEFORMAT'a bağlıdır. SET DATEFORMAT, tarih bir tarih veya saat veri türünün sütun ifadesi olduğunda döndürme değerini değiştirmez.

Bu tablo, tüm datepart argümanlarını, karşılık gelen döndürme değerleriyle birlikte SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10')listeler. Tarih argümanı datetimeoffset(7) veri tipine sahiptir. Nanosaniyetarih parçası iade değerinin son iki konumu her zaman 00 olur ve bu değerin 9 ölçeği vardır:

.123456700

datepart Dönüş değeri
yıl, yyyy, yy 2007
çeyrek, qq, q 4
ay, mm, m 10
Dayofyear, Dy, Y 303
gün, dd, d 30
hafta, hafta, ww, ww 44
hafta içi gün, DW 3
saat, hh 12
dakika, n 15
ikinci, ss, s 32
milisaniye, ms 123
mikrosaniye, MCS 123456
nanosaniye, ns 123456700
tzoffset, tz 310
iso_week, isowk, isoww 44

Hafta ve hafta içi tarih tartışmaları

Bir haftalık (wk, ww) veya hafta içi (dw) datepart için, iade DATEPART değeri SET DATEFIRST'in belirlediği değere bağlıdır.

Her yılın 1 Ocak'ı, haftatarih kısmı için başlangıç numarasını belirler. Örneğin:

DATEPART (wk, '1 Ocak, xxxx') = 1

burada xxxx herhangi bir yıldır.

Bu tablo, her SET DATEFIRST argümanı için '2007-04-21' için hafta ve hafta içitarih parçasının iade değerini gösterir. 1 Ocak 2007 Pazartesi gününe denk geliyor. 21 Nisan 2007, Cumartesi gününe denk geliyor. ABD İngilizcesi için,

SET DATEFIRST 7 -- ( Sunday )

varsayılan olarak hizmet verir. DATEFIRST ayarını yaptıktan sonra, datepart tablo değerleri için önerilen bu SQL ifadesini kullanın:

SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')

ÖNCE TARIH BELIRLENİN.

tartışma
hafta

Döndürülen
hafta içi

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

yıl, ay ve gün tarih bölüm Argümanlar

DATEPART (yıl, tarih), DATEPART (ay, tarih) ve DATEPART (gün, tarih) için döndürülen değerler, sırasıyla YEAR, AY ve DAY fonksiyonlarının döndürdükleriyle aynıdır.

iso_week tarih bölümü

ISO 8601, haftalar için bir numaralandırma sistemi olan ISO hafta-tarih sistemini içerir. Her hafta, Perşembe gününün geçtiği yılla ilişkilidir. Örneğin, 2004 yılının 1. haftası (2004W01) 29 Aralık 2003 Pazartesi'den 4 Ocak 2004 Pazar gününe kadar kapsıyordu. Avrupa ülkeleri/bölgeleri genellikle bu numaralandırma tarzını kullanır. Avrupa dışı ülkeler/bölgeler genellikle bunu kullanmaz.

Not: Bir yıldaki en yüksek hafta sayısı 52 veya 53 olabilir.

Farklı ülkelerin/bölgelerin numaralandırma sistemleri ISO standardına uymayabilir. Bu tablo altı olasılığı gösteriyor:

Haftanın ilk günü Yılın ilk haftası İki kez atanan haftalar Kullanılan/Kullanılan
Pazar 1 Ocak,

İlk Cumartesi,

Yılın 1-7 günü
Yes Amerika Birleşik Devletleri
Pazartesi 1 Ocak,

İlk Pazar,

Yılın 1-7 günü
Yes Avrupa'nın ve Birleşik Krallık'ın büyük bir kısmı
Pazartesi 4 Ocak,

İlk Perşembe,

Yılın 4-7 günü
Hayı ISO 8601, Norveç ve İsveç
Pazartesi 7 Ocak,

İlk Pazartesi,

Yılın yedi günü
Hayı
Çarşamba 1 Ocak,

İlk Salı,

Yılın 1-7 günü
Yes
Cumartesi 1 Ocak,

İlk Cuma,

Yılın 1-7 günü
Yes

tzoffset

DATEPART TZOFFSET (TZ) değerini imzalanan dakika sayısı olarak döndürür. Bu ifade, 310 dakikalık bir zaman dilimi ofseti döndürür:

SELECT DATEPART (tzoffset, '2007-05-10  00:00:01.1234567 +05:10');  

DATEPART TZOFFSET değerini aşağıdaki şekilde gösterir:

  • datetimeoffset ve datetime2 için, tzoffset zaman ofsetini dakika cinsinden döndürür; datetime2 için kayma her zaman 0 dakikadır.
  • Dolaylı olarak datetimeoffset veya datetime2'ye dönüştürebilen veri türleri için, DATEPART zaman ofsetini dakika cinsinden döndürür. İstisna: diğer tarih/saat veri türleri.
  • Diğer tüm tür parametreler hata ile sonuçlanır.

smalldatetime tarih argümanı

Smalldatetimetarih değeri için, DATEPART saniyeler 00 olarak döner.

Tarih argümanında olmayan bir tarih parçası için varsayılan dönerdi

Eğer tarih argümanı veri tipi belirtilen datepart içermiyorsa, DATEPART sadece bir datepart belirtildiğinde o datepart için varsayılan döner.

Örneğin, herhangi bir tarih veri tipi için varsayılan yıl-ay-gün 1900-01-01'dir. Bu ifadede datepart için tarih kısmı argümanları, tarih için zaman argümanı vardır ve döndürür 1900, 1, 1, 1, 2.

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

Tarih değişken veya tablo sütunu olarak belirtilirse ve o değişken veya sütunun veri tipinde belirtilen datepart yoksa, DATEPART 9810 hatası döner. Bu örnekte, değişken @t'ninzaman veri tipi vardır. Örnek, zaman veri tipi için kısmen yıl tarihi geçersiz olduğu için başarısız olur:

DECLARE @t time = '12:10:30.123';   
SELECT DATEPART(year, @t);  

Kesirli saniyeler

Bu ifadeler kısmal DATEPART saniyeler döndürdüğünü gösterir:

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 WHERE, HAVE, GROUP BY ve ORDER BY cümlelerinde kullanılabilir.

DATEPART, SQL Server 2008 (10.0.x) ve sonrasında dize literallerini dolaylı olarak datetime2 tipi olarak kullanır. Bu, DATENAME'in tarih bir dizi olarak geçtiğinde YDM formatını desteklemediği anlamına gelir. YDM biçimini kullanmak için dizeyi açıkça bir datetime veya smalldatetime türüne atamanız gerekir.

Örnekler

Bu örnek temel yılı döndürüyor. Temel yıl, tarih hesaplamalarında yardımcı olur. Örnekte, bir sayı tarihi belirtir. SQL Server'ın 0'ı 1 Ocak 1900 olarak yorumladığını fark edin.

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);  

-- Returns: 1900    1    1 

Bu örnek tarihin 12/20/1974gün kısmını geri getirir.

-- Uses AdventureWorks  
  
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;  

-- Returns: 20

Bu örnek tarihin 12/20/1974yıl kısmını geri getirir.

-- Uses AdventureWorks  
  
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;  

-- Returns: 1974

Ayrıca bakınız

CAST VE DÖNÜŞTÜR (Transact-SQL)DATETRUNC