Delen via


DATEPART (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Deze functie geeft een geheel getal terug dat het opgegeven datumdeel van de opgegeven datum vertegenwoordigt.

Zie Datum- en tijdgegevenstypen en -functies (Transact-SQL) voor een overzicht van alle transact-SQL-datum- en tijdgegevenstypen en -functies.

Transact-SQL syntaxis-conventies

Syntaxis

DATEPART ( datepart , date )  

Arguments

datepart
Het specifieke deel van het datumargument waarvoor DATEPART een geheel getal zal teruggeven. Deze tabel bevat alle geldige datumonderdelenargumenten .

Opmerking

DATEPART accepteert geen door de gebruiker gedefinieerde variabele-equivalenten voor de datepart-argumenten .

datepart Abbreviations
jaar yyy, jjjj
wijk qq, q
maand mm,m
dayofyear dy, y
dag dd, d
week WK, WW
weekdag Dw
uur hh
minuut mi, n
tweede ss, s
milliseconde mevrouw
microseconde Mcs
nanoseconde Ns
Tzoffset tz
iso_week isowk, isoww

date
Een expressie die oplost naar een van de volgende datatypen:

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

Voor datumDATEPART accepteert u een kolomexpressie, expressie, letterlijke tekenreeks of door de gebruiker gedefinieerde variabele. Gebruik viercijferige jaren om dubbelzinnigheidsproblemen te voorkomen. Zie De optie serverconfiguratie van twee cijfers configureren voor meer informatie over tweecijferige jaren.

Retourtype

int

Retourwaarde

Elk datumdeel en de bijbehorende afkortingen geven dezelfde waarde als resultaat.

De retourwaarde hangt af van de taalomgeving die is ingesteld met SET LANGUAGE, en van de optie Configure the default language Server Configuration Option van het login. De retourwaarde hangt af van SET DATEFORMAT als datum een stringliteral is van sommige formaten. SET DATEFORMAT verandert de retourwaarde niet wanneer de datum een kolomuitdrukking is van een datum- of tijddatatype.

Deze tabel geeft alle datepart-argumenten weer met bijbehorende retourwaarden, voor de stelling SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Het datumargument heeft een datetimeoffset(7) datatype. De laatste twee posities van de nanosecondedatepart-returnwaarde zijn altijd 00 en deze waarde heeft een schaal van 9:

.123456700

datepart Retourwaarde
jaar, jjj, jij 2007
kwart, qq, q 4
maand, mm, m 10
Dagvanjaar, Dy, Y 303
Day, DD, D 30
week, week, ww 44
Doordeweeks, DW 3
uur, hh 12
minuut, n 15
Ten tweede, ss, s 32
milliseconde, ms 123
Microseconde, MCS 123456
nanoseconde, ns 123456700
tzoffset, tz 310
iso_week, isowk, isoww 44

Discussies over week- en weekdag-datumdelen

Voor een week- (week-, werk-, werkdag) of weekdag (dw) datumdeel hangt de DATEPART retourwaarde af van de waarde die door SET DATEFIRST is ingesteld.

1 januari van elk jaar bepaalt het startnummer voor het weekdatumgedeelte. Voorbeeld:

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

waarbij xxxx een willekeurig jaar is.

Deze tabel toont de retourwaarde voor het week- en weekdagdatumdeel voor '2007-04-21' voor elk SET DATEFIRST-argument. 1 januari 2007 valt op een maandag. 21 april 2007 valt op een zaterdag. Voor U.S. English,

SET DATEFIRST 7 -- ( Sunday )

dient als standaard. Na het instellen van DATEFIRST gebruik je deze voorgestelde SQL-instructie voor de datepart-tabelwaarden:

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

VASTE DATUM EERST

ruzie
week

Terug
weekdag

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

jaar, maand en dag datumdeel Argumenten

De waarden die worden teruggegeven voor DATEPART (jaar, datum), DATEPART (maand, datum) en DATEPART (dag, datum) zijn dezelfde als die welke respectievelijk door de functies YEAR,MONTH enDAY.

iso_week datepart

ISO 8601 omvat het ISO-week-datumsysteem, een nummeringssysteem voor weken. Elke week is verbonden met het jaar waarin donderdag valt. Bijvoorbeeld, week 1 van 2004 (2004W01) besloeg maandag 29 december 2003 tot zondag 4 januari 2004. Europese landen/regio's gebruiken doorgaans deze nummeringstijl. Niet-Europese landen/regio's gebruiken het meestal niet.

Let op: het hoogste weekgetal in een jaar kan 52 of 53 zijn.

De nummeringssystemen van verschillende landen/regio's voldoen mogelijk niet aan de ISO-standaard. Deze tabel toont zes mogelijkheden:

Eerste dag van de week De eerste week van het jaar bevat Twee weken toegewezen Gebruikt door/in
Zondag 1 januari,

Eerste zaterdag,

1-7 dagen per jaar
Yes Verenigde Staten
Maandag 1 januari,

Eerste zondag,

1-7 dagen per jaar
Yes Het grootste deel van Europa en het Verenigd Koninkrijk
Maandag 4 januari,

Eerste donderdag,

4-7 dagen per jaar
Nee. ISO 8601, Noorwegen en Zweden
Maandag 7 januari,

Eerste maandag,

Zeven dagen van het jaar
Nee.
Woensdag 1 januari,

Eerste dinsdag,

1-7 dagen per jaar
Yes
Zaterdag 1 januari,

Eerste vrijdag,

1-7 dagen per jaar
Yes

Tzoffset

DATEPART geeft de tzoffset (tz) waarde terug als het aantal minuten (ondertekend). Deze verklaring geeft een tijdzoneverschuiving van 310 minuten terug:

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

DATEPART rendert de tzoffset-waarde als volgt:

  • Voor datetimeoffset en datetime2 geeft tzoffset de time offset in minuten terug, waarbij de offset voor datetime2 altijd 0 minuten is.
  • Voor datatypes die impliciet kunnen omzetten naar datetimeoffset of datetime2,DATEPART wordt de time offset in minuten teruggegeven. Uitzondering: andere datum-/tijdgegevenstypen.
  • Parameters van alle andere typen leiden tot een fout.

smalldatetime date Argument

Voor een smalldatetime-datumwaardeDATEPART wordt seconden teruggegeven als 00.

Standaard Returned voor een datepart That Not in a Date Argument zit

Als het datatype van het datumargument niet de gespecificeerde datepart heeft, DATEPART geeft het standaard voor die datepart alleen terug wanneer een literal voor datum is gespecificeerd.

Bijvoorbeeld, de standaard jaar-maand-dag voor elk datumdatatype is 1900-01-01. Deze stelling bevat datumdeelargumenten voor datumdeel, een tijdsargument voor datum, en geeft .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');  

Als datum als variabele of tabelkolom is opgegeven, en het datatype voor die variabele of kolom niet het opgegeven datumdeel heeft, DATEPART geeft fout 9810 terug. In dit voorbeeld heeft variabele @t een tijdsdatatype . Het voorbeeld faalt omdat de datum deeljaar ongeldig is voor het tijdsdatatype :

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

Fractieseconden

Deze uitspraken tonen aan dat DATEPART fractionele seconden teruggeeft:

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  

Opmerkingen

DATEPART kan worden gebruikt in de select-lijst, WHERE, HAVING, GROUP BY en ORDER BY-clausules.

DATEPART cast impliciet stringliterals als een datetime2-type in SQL Server 2008 (10.0.x) en later. Dit betekent dat DATENAME het formaat YDM niet ondersteunt wanneer de datum als string wordt doorgegeven. U moet de tekenreeks expliciet casten naar een datum/tijd - of smalldatetime-type om de YDM-indeling te gebruiken.

Voorbeelden

Dit voorbeeld geeft het basisjaar terug. Het basisjaar helpt bij het berekenen van de datum. In het voorbeeld geeft een nummer de datum aan. Let op dat SQL Server 0 interpreteert als 1 januari 1900.

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

-- Returns: 1900    1    1 

Dit voorbeeld geeft het dagdeel van de datum 12/20/1974terug.

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

-- Returns: 20

Dit voorbeeld geeft het jaardeel van de datum 12/20/1974terug.

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

-- Returns: 1974

Zie ook

CAST AND CONVERT (Transact-SQL)DATETRUNC