In SQL Server is de T-SQL DATEPART() functie retourneert een geheel getal dat het opgegeven datepart vertegenwoordigt van de opgegeven datum . U kunt bijvoorbeeld doorgeven in 2021-01-07 en laat SQL Server alleen het jaargedeelte retourneren (2021 ).
U kunt ook het tijdgedeelte extraheren. U kunt bijvoorbeeld doorgeven in 2018-06-02 08:24:14.3112042 en laat SQL Server alleen het uurgedeelte retourneren (8 ).
Voorbeelden hieronder.
Syntaxis
Ten eerste de syntaxis. De DATEPART() syntaxis gaat als volgt:
DATEPART ( datepart , date )
Waar datepart is het deel van date (een datum- of tijdwaarde) waarvoor een geheel getal wordt geretourneerd.
Voorbeeld 1
Hier is een eenvoudig voorbeeld waarbij ik de jaarcomponent van een datum terugstuur.
SELECT DATEPART(year, '2021-01-07') AS Result;
Resultaat:
+----------+ | Result | |----------| | 2021 | +----------+
Voorbeeld 2
In dit voorbeeld wijs ik een datum toe aan een variabele, dan gebruik ik meerdere instanties van DATEPART() om verschillende delen van die datum op te halen.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT
DATEPART(year, @date) AS Year,
DATEPART(quarter, @date) AS Quarter,
DATEPART(month, @date) AS Month,
DATEPART(dayofyear, @date) AS 'Day of Year',
DATEPART(day, @date) AS Day,
DATEPART(week, @date) AS Week,
DATEPART(weekday, @date) AS Weekday; Resultaat:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | 6 | 153 | 2 | 22 | 7 | +--------+-----------+---------+---------------+-------+--------+-----------+
Voorbeeld 3
Je kunt ook de verschillende tijdsdelen uit de datum halen.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT
DATEPART(hour, @date) AS Hour,
DATEPART(minute, @date) AS Minute,
DATEPART(second, @date) AS Second,
DATEPART(millisecond, @date) AS Millsecond,
DATEPART(microsecond, @date) AS Microsecond,
DATEPART(nanosecond, @date) AS Nanosecond; Resultaat:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Voorbeeld 4
U kunt ook de TZoffset . ophalen en de ISO_WEEK datepart.
De TZoffset wordt geretourneerd als het aantal minuten (ondertekend). De ISO_WEEK datepart verwijst naar het ISO-week-datumsysteem (onderdeel van de ISO 8601-standaard) dat een nummeringssysteem is voor weken.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';
SELECT
DATEPART(TZoffset, @date) AS 'Time Zone Offset',
DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK'; Resultaat:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | 480 | 22 | +--------------------+------------+
In dit voorbeeld stel ik de datum in op een datetimeoffset formaat, inclusief de tijdzone-offset. De TZoffset wordt binnen enkele minuten geretourneerd.
Een snel alternatief
T-SQL biedt ook een meer beknopte manier om de dag-, maand- of jaarcomponenten van een datum te retourneren met de DAY() , MONTH() en YEAR() functies.
Ze werken als volgt:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT
DAY(@date) AS DAY,
MONTH(@date) AS MONTH,
YEAR(@date) AS YEAR;
Resultaat:
+-------+---------+--------+ | DAY | MONTH | YEAR | |-------+---------+--------| | 2 | 6 | 2018 | +-------+---------+--------+
De naam van de maand of dag ophalen
Als u de naam van de maand of de dag nodig heeft, gebruikt u de DATENAME() in plaats daarvan functioneren. Deze functie retourneert de resultaten als een tekenreeks en u kunt de maand en weekdag op naam retourneren. Hier zijn enkele DATENAME() voorbeelden om te laten zien wat ik bedoel.