Megosztás a következőn keresztül:


DÁTUMRÉSZ (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Ez a függvény egy egész számot ad vissza, amely a megadott dátum egy részét jelöli.

A Transact-SQL dátum- és időadattípusainak és függvényeinek áttekintését a Dátum és idő adattípusok és függvények (Transact-SQL) című témakörben tekintheti meg.

Transact-SQL szintaxis konvenciók

Szemantika

DATEPART ( datepart , date )  

Arguments

datepart
Az a konkrét dátum argumentum, amelyhez DATEPART egész számot ad vissza. Ez a táblázat felsorolja az összes érvényes datepart argumentumot.

Megjegyzés:

DATEPART nem fogad el felhasználó által definiált változóekvivalenseket a datepart argumentumokhoz.

datepart Abbreviations
év yyy, yyyy
negyed qq, q
hónap Mm, m
napofév DY, y
nap dd, d
hét wk, ww
hétköznap Dw
óra Hh
perc mi, n
második ss, s
Ezredmásodperc Ms
mikroszekundum Mcs
nanoszekundum Ns
tzoffset tz
iso_week Issowk, isoww

date
Egy kifejezés, amely az alábbi adattípusok egyikére oldódik:

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

Dátumként egy oszlopkifejezéstDATEPART, kifejezést, sztringkonstanst vagy felhasználó által definiált változót fogad el. Használjon négyjegyű éveket a kétértelmű problémák elkerülése érdekében. A kétjegyű évszámmal kapcsolatos információkért tekintse meg a Kétjegyű év leépítési kiszolgáló konfigurációs beállításának konfigurálását .

Visszatérési típus

int

Visszaadott érték

Minden dátumpart és rövidítése ugyanazt az értéket adja vissza.

A visszaküldési érték a SET LANGUAGE használatával beállított nyelvi környezettől és a bejelentkezés alapértelmezett nyelv konfigurálása szerver konfigurációs opciótól függ. A visszaküldési érték a SET DATEFORMAT-tól függ, ha a dátum egyes formátumok string literálisa. A SET DATEFORMAT nem változtatja meg a visszaküldési értéket, ha a dátum egy dátum- vagy időadattípus oszlopkifejezése.

Ez a táblázat felsorolja az összes datepart argumentumot, megfelelő visszaküldési értékekkel a következő állításhoz SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). A date argumentumnak datetimeoffset(7) adattípusa van. A nanoszekundomosdátumpart visszatérési értékének utolsó két pozíciója mindig 00 a következő, és ennek az értéknek a skálája 9:

.123456700

datepart Visszaadott érték
év, yyyyy, yy 2007
negyed, qq, q 4
hónap, mm, m 10
Napofyear, Dy, Y 303
nap, dd, d 30
hét, hét, ww 44
hétköznap, DW 3
óra, hh 12
perc, n 15
másod, ss, s 32
milliszekundum, MS 123
mikroszekundumus, MCS 123456
nanoszekundumi, ns 123456700
tzoffset, tz 310
iso_week, isowk, isoww 44

Hét és hétköznapi dátumpart viták

Egy hét (wk, ww) vagy hétköznapi (dw) datepart esetén a DATEPART visszahozási érték a SET DATEFIRST által beállított értéktől függ.

Bármely év január 1-je határozza meg a hetidátum kezdőszámát. Például:

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

ahol a xxxx bármely év.

Ez a táblázat bemutatja a "2007-04-21" hét és hétköznapidátum értékét minden SET DATEFIRST argument esetén. 2007. január 1-je hétfőre esik. 2007. április 21-e szombatra esik. Az amerikai angol nyelv esetében,

SET DATEFIRST 7 -- ( Sunday )

alapértelmezett megoldásként szolgál. A DATEFIRST beállítása után használd ezt a javasolt SQL utasítást a datepart tábla értékekhez:

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

ELŐBB A DÁTUM BEÁLLÍTÁSA

argumentum
hét

Vissza
hétköznap

Vissza
1 16 6
2 17 5
3 17 4
4 17 3
5 17 2
6 17 1
7 16 7

év, hónap és nap dátum rész Érvek

A DATEPART (év, dátum), DATEPART (hónap, dátum) és DATEPART (nap, dátum) értékek megegyeznek a YEAR, MONTH és DAY függvények által visszaadott értékekkel.

iso_week dátumpart

Az ISO 8601 tartalmazza az ISO hét-dátum rendszert, amely hetekre szóló számozási rendszer. Minden hét az évhez kapcsolódik, amelyben csütörtök van. Például 2004 első hete (2004W01) 2003. december 29-én, hétfőtől 2004. január 4-ig, vasárnapig terjedt le. Európai országok/régiók általában ezt a számozási stílust alkalmazzák. Nem európai országok/régiók általában nem használják.

Megjegyzés: az év legmagasabb heti száma akár 52, akár 53 lehet.

A különböző országok/régiók számozási rendszerei nem feltétlenül megfelelnek az ISO szabványnak. Ez a táblázat hat lehetőséget mutat be:

A hét első napja Az év első hetében Kétszer kijelölt hetek Használt/Használt
Vasárnap Január 1.,

Első szombat,

Az év 1-7 napja
Igen Egyesült Államok
Hétfő Január 1.,

Az első vasárnap,

Az év 1-7 napja
Igen Európa nagy része és az Egyesült Királyság
Hétfő Január 4.,

Az első csütörtök,

Az év 4-7 napja
Nem ISO 8601, Norvégia és Svédország
Hétfő Január 7.,

Az első hétfő,

Hét nap az évben
Nem
Szerda Január 1.,

Az első kedd,

Az év 1-7 napja
Igen
Szombat Január 1.,

Első péntek,

Az év 1-7 napja
Igen

tzoffset

DATEPART A TZOFFSET (TZ) értéket a percek száma (aláírt) adja vissza. Ez az állítás 310 perces időzóna eltolást ad vissza:

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

DATEPART a tzoffset értékét a következőképpen jeleníti meg:

  • Datetimeoffset és datetime2 esetén a tzoffset visszaadja az időeltolódást percekben, ahol a datetime2 eltolása mindig 0 perc.
  • Azoknál az adattípusoknál, amelyek implicit módon átalakíthatók datetimeoffset vagy datetime2 formátumra, DATEPART az időeltolódást percekben adja vissza. Kivétel: más dátum/időpont adattípusok.
  • Minden más típusú paraméter hibát eredményez.

smalldatetime date érv

Smalldatetimedátumérték esetén DATEPART másodperceket 00-ként ad vissza.

Alapértelmezett visszatérés egy dátumrészhez, amely nincs dátum argumentumban

Ha a date argumentum adattípusa nem tartalmazza a megadott datepartot, DATEPART akkor csak akkor adja vissza az alapértelmezett dátumrészt , ha egy literális van megadva a datepartra.

Például bármely dátum adattípus alapértelmezett év-hónap-napja 1900-01-01. Ez az állítás date part argumentumokat tartalmaz a datepart helyett, egy time argumentum a date számára, és visszaadja 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');  

Ha a dátumot változóként vagy táblaoszlopként jelölik, és az adott változó vagy oszlop adattípusa nem tartalmazza a megadott datepart-ot, DATEPART akkor 9810-es hibát ad vissza. Ebben a példában a @t változónak időadattípusa van. A példa azért bukik el, mert a dátum részévé érvénytelen az időadattípusra :

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

Törtmásodpercek

Ezek az állítások azt mutatják, hogy DATEPART törtmásodperceket ad vissza:

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  

Megjegyzések

DATEPART használható a kiválasztó listában, HOL, HAVE, GROUP BY és ORDER BY klauzulákban.

A DATEPART implicit módon a string literalokat datetime2 típusként bocsátja el az SQL Server 2008 (10.0.x) és újabb verziókban. Ez azt jelenti, hogy a DATENAME nem támogatja a YDM formátumot, amikor a dátumot stringként továbbítják. Az YDM-formátum használatához explicit módon datetime vagy smalldatetime típusra kell írnia a sztringet.

Példák

Ez a példa az alapévet adja vissza. Az alapév segít a dátum kiszámításában. A példában egy szám határozza meg a dátumot. Figyeljük meg, hogy az SQL Server 0-t 1900. január 1-jének értelmezi.

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

-- Returns: 1900    1    1 

Ez a példa a dátum 12/20/1974napos részét adja vissza.

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

-- Returns: 20

Ez a példa adja vissza a dátum 12/20/1974évrészét.

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

-- Returns: 1974

Lásd még

CAST AND CONVERT (Transact-SQL)DATETRUNC