Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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,
DATEPARTwordt 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