MariaDB bevat een aantal datum- en tijdseenheden die u kunt gebruiken bij het werken met datum- en tijdwaarden. Bijvoorbeeld MONTH
is een eenheid, en HOUR
is een andere eenheid.
Sommige eenheden zijn samengestelde eenheden. Samengestelde eenheden zijn wanneer twee eenheden worden gecombineerd tot één. De naamgevingsconventie is dat elke eenheidsnaam wordt gescheiden door een onderstrepingsteken. Bijvoorbeeld MINUTE_SECOND
is voor minuten en seconden.
Hieronder staan enkele voorbeelden die laten zien hoe samengestelde eenheden werken in MariaDB.
Lijst van samengestelde eenheden
Ten eerste is hier een lijst van de samengestelde eenheden die beschikbaar zijn in MariaDB:
Eenheid | Beschrijving |
---|---|
SECOND_MICROSECOND | Seconden.Microseconden |
MINUTE_MICROSECOND | Minuten.Seconden.Microseconden |
MINUTE_SECOND | Minuten.Seconden |
HOUR_MICROSECOND | Uren.Minuten.Seconden.Microseconden |
HOUR_SECOND | Uren.Minuten.Seconden |
HOUR_MINUTE | Uren.Minuten |
DAY_MICROSECOND | Dagen Uren.Minuten.Seconden.Microseconden |
DAY_SECOND | Dagen Uren.Minuten.Seconden |
DAY_MINUTE | Dagen Uren.Minuten |
DAY_HOUR | Dagen Uren |
YEAR_MONTH | Jaar-Maanden |
Alleen al het kijken naar hun namen geeft een redelijk goed idee van wat ze doen.
Samengestelde eenheden (zoals bij elke datum/tijd-eenheid) kunnen worden gebruikt bij het extraheren van delen van een datum/tijd-waarde, en ook bij dingen zoals het optellen en aftrekken van een tijdsinterval bij een datum/tijd-waarde.
Deze kunnen worden gebruikt met de +
en -
operatoren bij het uitvoeren van berekeningen op datums, met functies zoals ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
, en TIMESTAMPDIFF()
.
Ze kunnen ook worden gebruikt in de ON SCHEDULE
clausule van de CREATE_EVENT()
en ALTER_EVENT()
functies.
Voorbeeld – Samengestelde eenheden extraheren
Datum- en tijdseenheden kunnen worden gebruikt met een heleboel verschillende functies en in verschillende andere contexten. Een van de functies die deze eenheden accepteren is de EXTRACT()
functie. Deze functie retourneert een gespecificeerde datum/tijd-eenheid van een bepaalde datum of datetime-waarde.
Hier is een voorbeeld van het gebruik van een samengestelde eenheid om het jaar en de maand uit een datum te halen:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Resultaat:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
We kunnen zien dat het jaar en de maand als één waarde worden geretourneerd.
Voorbeeld – Samengestelde eenheden optellen/aftrekken
Samengestelde eenheden kunnen ook worden gebruikt om datum- en tijdsintervallen op te tellen en af te trekken.
Voorbeeld:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Resultaat:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
In dit geval zijn er twee onderdelen waar u rekening mee moet houden met betrekking tot de composieteenheid.
Net als in het vorige voorbeeld hebben we een samengestelde eenheid gebruikt (in dit geval DAY_HOUR
). Met betrekking tot het werkelijke interval dat moet worden toegevoegd, hebben we een dubbele punt gebruikt om elke zijde van de samengestelde eenheid te scheiden.
In dit geval hebben we '2:08'
. opgegeven , wat 2 dagen en 8 uur optelde bij de datumwaarde. De oorspronkelijke datum heeft geen tijdgedeelte, en daarom wordt aangenomen dat de begintijd 00:00:00
is .
MariaDB is redelijk vergevingsgezind met de striktheid van het formaat. We kunnen hetzelfde effect krijgen door verschillende scheidingstekens te gebruiken, en ook door de voorloopnul weg te laten.
Hier is nog een voorbeeld dat de DATE_ADD()
. gebruikt functie met verschillende tijdsintervallen:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Resultaat:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Hier zijn nog enkele voorbeelden van verschillende samengestelde eenheden:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Resultaat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+