Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Denna funktion returnerar ett heltal som representerar den angivna datumdelen av det angivna datumet.
Se Datatyper och funktioner för datum och tid (Transact-SQL) för en översikt över alla datatyper och funktioner för Transact-SQL-datum och tid.
Transact-SQL syntaxkonventioner
Syntax
DATEPART ( datepart , date )
Arguments
datepart
Den specifika delen av datumargumentet för vilket DATEPART kommer att returnera ett heltal. I den här tabellen visas alla giltiga datepart-argument .
Anmärkning
DATEPART accepterar inte användardefinierade variabelekvivalenter för datepart-argumenten .
| datepart | Abbreviations |
|---|---|
| år | yyy, yyyyy |
| fjärdedel | qq, q |
| månad | mm, m |
| dayofyear | dy, y |
| dag | dd, d |
| vecka | WK, WW |
| vardag | Dw |
| timme | hh |
| minut | mi, n |
| andra | ss, s |
| millisekund | Ms |
| mikrosekund | Mcs |
| nanosekund | Ns |
| Tzoffset | tz |
| iso_week | Isowk, Isoww |
date
Ett uttryck som löser sig till en av följande datatyper:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
För datumDATEPART accepterar ett kolumnuttryck, uttryck, strängliteral eller användardefinierad variabel. Använd fyrsiffriga år för att undvika tvetydighetsproblem. Mer information om tvåsiffriga år finns i Konfigurera det tvåsiffriga alternativet för serverkonfiguration .
Returtyp
int
Returvärde
Varje datumdel och dess förkortningar returnerar samma värde.
Returvärdet beror på språkmiljön som sätts av att använda SET LANGUAGE, och av alternativet Configure the default language Server Configuration (konfiguration) för inloggningen. Returvärdet beror på SET DATEFORMAT om datum är en strängbokstav av vissa format. SET DATEFORMAT ändrar inte returvärdet när datumet är en kolumnuttryck för en datum- eller tiddatatyp.
Denna tabell listar alla datepart-argument , med motsvarande returnvärden, för satsen SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10').
Datumargumentet har en datetimeoffset(7)-datatyp. De två sista positionerna i nanosekundensdatumdelsreturvärde är alltid 00 och detta värde har en skala på 9:
.123456700
| datepart | Returvärde |
|---|---|
| år, jjj, jæ | 2007 |
| Kvart, qq, q | 4 |
| månad, mm, m | 10 |
| Årets dag, dy, y | 303 |
| Dag, DD, D | 30 |
| vecka, vecka, vecka | 44 |
| vardag, DW | 3 |
| timme, hh | 12 |
| minut, n | 15 |
| För det andra, SS, s | 32 |
| millisekund, ms | 123 |
| Microsecond, MCS | 123456 |
| nanosekund, ns | 123456700 |
| tzoffset, tz | 310 |
| iso_week, isowk, isoww | 44 |
Argument om vecko- och veckodagsdatumdelar
För en vecka (vecka, arbetsdag) eller veckodag (dw)datumdelDATEPART beror returvärdet på värdet som sätts av SET DATEFIRST.
Den 1 januari varje år definierar startnumret för veckansdatumdel. Till exempel:
DATEPART (vecka, '1 jan, xxxx') = 1
där xxxx är ett valfritt år.
Denna tabell visar returvärdet för veckans och veckansdatum för '2007-04-21' för varje argument SÄTT DATUMFÖRST. Den 1 januari 2007 infaller på en måndag. Den 21 april 2007 infaller på en lördag. För amerikansk engelska,
SET DATEFIRST 7 -- ( Sunday )
fungerar som standard. Efter att ha satt DATEFIRST, använd denna föreslagna SQL-sats för datepart-tabellvärdena:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
| BESTÄMT DATUM FÖRST argument |
vecka Returneras |
vardag Returneras |
|---|---|---|
| 1 | 16 | 6 |
| 2 | 17 | 5 |
| 3 | 17 | 4 |
| 4 | 17 | 3 |
| 5 | 17 | 2 |
| 6 | 17 | 1 |
| 7 | 16 | 7 |
år, månad och dag datumdel Argument
De värden som returneras för DATEPART (år, datum), DATEPART (månad, datum) och DATEPART (dag, datum) är desamma som de som returneras av funktionerna YEAR,MONTH och DAY, respektive.
iso_week datumdel
ISO 8601 inkluderar ISO-veckodatumsystemet, ett numreringssystem för veckor. Varje vecka är kopplad till det år då torsdagen infaller. Till exempel täckte vecka 1 2004 (2004W01) måndag 29 december 2003 till söndag 4 januari 2004. Europeiska länder/regioner använder vanligtvis denna typ av numrering. Icke-europeiska länder/regioner använder det vanligtvis inte.
Observera: det högsta veckonumret under ett år kan vara antingen 52 eller 53.
Numreringssystemen i olika länder/regioner kan inte följa ISO-standarden. Denna tabell visar sex möjligheter:
| Första dagen i veckan | Årets första vecka innehåller | Veckor tilldelade två gånger | Används av/i |
|---|---|---|---|
| söndag | 1 januari, Första lördagen, 1–7 dagar om året |
Yes | USA |
| Måndag | 1 januari, Första söndagen, 1–7 dagar om året |
Yes | Större delen av Europa och Storbritannien |
| Måndag | 4 januari, Första torsdagen, 4–7 dagar om året |
Nej | ISO 8601, Norge och Sverige |
| Måndag | 7 januari, Första måndagen, Sju dagar på året |
Nej | |
| Onsdag | 1 januari, Första tisdagen, 1–7 dagar om året |
Yes | |
| lördag | 1 januari, Första fredagen, 1–7 dagar om året |
Yes |
Tzoffset
DATEPART returnerar tzoffset (tz)-värdet som antalet minuter (signerat). Detta uttalande ger en tidszonsförskjutning på 310 minuter:
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART renderar tzoffset-värdet enligt följande:
- För datetimeoffset och datetime2 returnerar tzoffset tidsoffset i minuter, där offset för datetime2 alltid är 0 minuter.
- För datatyper som implicit kan konvertera till datetimeoffset eller datetime2,
DATEPARTreturneras tidsoffset i minuter. Undantag: andra datum / tid-datatyper. - Parametrar av alla andra typer resulterar i ett fel.
smalldatetime-datum Argument
För ett litetdatetime-datumvärde returnerar DATEPART sekunder som 00.
Standard Returnerad för en datepart som inte finns i ett datumargument
Om datumargumentets datatyp inte har den angivna datepart,DATEPART kommer standarden för den datepart endast att returnera standarden för den dateparten när en literal anges för date.
Till exempel är standardår-månad-dag för vilken datumdatatyp som helst 1900-01-01. Detta påstående har datumdelsargument för datumdel, ett tidsargument för datum, och det returnerar 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');
Om datum anges som en variabel- eller tabellkolumn, och datatypen för den variabeln eller kolumnen inte har den angivna datumdelen, DATEPART kommer felet 9810 att ge felmeddelandet 9810. I detta exempel har variabel @t en tidsdatatyp . Exemplet misslyckas eftersom datumet för delår är ogiltigt för tidsdatatypen :
DECLARE @t time = '12:10:30.123';
SELECT DATEPART(year, @t);
Bråkdelar av sekunder
Dessa påståenden visar att DATEPART returnerar bråkdelar av sekunder:
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
Anmärkningar
DATEPART kan användas i vallistan, WHERE, HAVING, GROUP BY och ORDER BY-klausulerna.
DATEPART kastar implicit strängliteraler som en datetime2-typ i SQL Server 2008 (10.0.x) och senare. Detta innebär att DATENAME inte stöder formatet YDM när datumet skickas som en sträng. Du måste uttryckligen omvandla strängen till en datetime - eller smalldatetime-typ för att använda YDM-formatet.
Examples
Detta exempel returnerar basåret. Basåret hjälper till med datumberäkningar. I exemplet anger ett nummer datumet. Observera att SQL Server tolkar 0 som 1 januari 1900.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
Detta exempel returnerar dagdelen av datumet 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
Detta exempel returnerar årsdelen av datumet 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974