In MySQL kunt u de EXTRACT()
. gebruiken functie om delen uit een datum te extraheren. U kunt bijvoorbeeld het jaargedeelte, het maandgedeelte of het daggedeelte extraheren. U kunt ook gedeelten uit de tijdcomponent extraheren, zoals minuten, seconden, microseconden, enz.
Dit artikel bevat voorbeelden om te demonstreren.
Syntaxis
De syntaxis gaat als volgt:
EXTRACT(unit FROM date)
Waar unit
is het datumgedeelte dat u wilt extraheren, en date
is de datumwaarde om dat deel uit te halen.
Zie de tabel onderaan dit artikel voor een lijst met geldige eenheidspecificaties.
Voorbeeld 1
Hier is een voorbeeld om het basisgebruik van de functie te demonstreren.
SELECT EXTRACT(YEAR FROM '2019-01-01') AS 'Result';
Resultaat:
+--------+ | Result | +--------+ | 2019 | +--------+
Voorbeeld 2 – Meer datumdelen
Hier haal ik de verschillende datumdelen uit een datum.
SET @date = '2019-10-03'; SELECT EXTRACT(DAY FROM @date) AS 'Day', EXTRACT(MONTH FROM @date) AS 'Month', EXTRACT(YEAR FROM @date) AS 'Year';
Resultaat:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 3 | 10 | 2019 | +------+-------+------+
Voorbeeld 3 – Tijddelen extraheren
Hier haal ik verschillende tijdsdelen uit een datum.
SET @date = '2019-10-03 12:35:05.123456'; SELECT EXTRACT(HOUR FROM @date) AS 'Hours', EXTRACT(MINUTE FROM @date) AS 'Minutes', EXTRACT(SECOND FROM @date) AS 'Seconds', EXTRACT(MICROSECOND FROM @date) AS 'Microseconds';
Resultaat:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 12 | 35 | 5 | 123456 | +-------+---------+---------+--------------+
Voorbeeld 4 – Eenheidspecificaties combineren
U kunt eenheidspecificaties ook als volgt combineren:
SET @date = '2019-10-03 12:35:05.123456'; SELECT EXTRACT(HOUR_MICROSECOND FROM @date) AS 'Result';
Resultaat:
+--------------+ | Result | +--------------+ | 123505123456 | +--------------+
Dit voorbeeld retourneert alles van het urengedeelte tot het microsecondengedeelte.
Een databasevoorbeeld
Hier is een voorbeeld van het extraheren van het jaar en de maand uit een kolom in een database:
USE sakila; SELECT payment_date AS 'Date/Time', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month' FROM payment WHERE payment_id = 1;
Resultaat:
+---------------------+------------+ | Date/Time | Year/Month | +---------------------+------------+ | 2005-05-25 11:30:37 | 200505 | +---------------------+------------+
Huidige datum/tijd
Hier extraheer ik het maandgedeelte van een datum die is gegenereerd met de CURDATE()
functie.
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE());
Resultaat:
+------------+-------------------------------+ | CURDATE() | EXTRACT(MONTH FROM CURDATE()) | +------------+-------------------------------+ | 2018-06-26 | 6 | +------------+-------------------------------+
In dit voorbeeld extraheer ik het uurgedeelte van de huidige datum en tijd (die wordt gegenereerd met de NOW()
functie).
SELECT NOW(), EXTRACT(HOUR FROM NOW());
Resultaat:
+---------------------+--------------------------+ | NOW() | EXTRACT(HOUR FROM NOW()) | +---------------------+--------------------------+ | 2018-06-26 09:01:46 | 9 | +---------------------+--------------------------+
Verwachte waarden
De volgende tabel toont de geldige eenheidswaarden en hun verwachte formaat.
unit Waarde | Verwachte expr Formaat |
---|---|
MICROSECONDE | MICROSECONDEN |
TWEEDE | SECONDEN |
MINUUT | MINUTEN |
UUR | UUR |
DAG | DAGEN |
WEEK | WEKEN |
MAAND | MAANDEN |
KWARTAAL | KWARTAAL |
JAAR | JAAR |
SECOND_MICROSECOND | ‘SECONDEN.MICROSECONDEN’ |
MINUTE_MICROSECOND | ‘MINUTEN:SECONDEN.MICROSECONDEN’ |
MINUTE_SECOND | ‘MINUTEN:SECONDEN’ |
HOUR_MICROSECOND | ‘UUR:MINUTEN:SECONDEN.MICROSECONDEN’ |
HOUR_SECOND | ‘UUR:MINUTEN:SECONDEN’ |
HOUR_MINUTE | ‘UUR:MINUTEN’ |
DAY_MICROSECOND | ‘DAGEN UUR:MINUTEN:SECONDEN.MICROSECONDEN’ |
DAY_SECOND | ‘DAGEN UUR:MINUTEN:SECONDEN’ |
DAY_MINUTE | ‘DAGEN UUR:MINUTEN’ |
DAY_HOUR | ‘DAGEN UUR’ |
JAAR_MAAND | ‘JAAR-MAANDEN’ |