Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai 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,
DATEPARTaz 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