Hier is een lijst met eenheden die kunnen worden gebruikt in MySQL-datetime- en intervalfuncties.
unit Waarde | Verwachte expr Formaat |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOUR |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTER |
YEAR | YEAR |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
Deze eenheden kunnen worden gebruikt met de +
en -
operatoren bij het uitvoeren van berekeningen op datums, met functies zoals ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, en EXTRACT()
.
Ze kunnen ook worden gebruikt in de ON SCHEDULE
clausule van de CREATE_EVENT()
en ALTER_EVENT()
functies.
De eerste negen eenheden kunnen worden gebruikt met TIMESTAMPADD()
en TIMESTAMPDIFF()
(deze twee functies ondersteunen de samengestelde eenheden niet op het moment van schrijven).
De eenheden met een onderstrepingsteken zijn samengestelde eenheden. Deze bestaan uit meer dan één basistijdseenheid. Deze kunnen worden gezien als een verkorte manier om meerdere eenheden in één keer te specificeren. Elke eenheid kan worden gescheiden door elk leesteken.
Voorbeelden
Hier is een voorbeeld van het toevoegen van een jaar aan een datetime-expressie:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Resultaat:
2036-01-01 01:30:45
In dit geval gebruiken we de +
operator om de optelling uit te voeren.
Datum-functies
De datum- en tijdseenheden kunnen worden gebruikt met verschillende datumfuncties.
Hier is het met de DATE_ADD()
functie:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Resultaat:
2036-01-01 01:30:45
Samengestelde eenheden
Hier is een voorbeeld dat samengestelde eenheden gebruikt:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:30:25' DAY_MINUTE) AS "DAY_MINUTE";
Resultaat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
De gehele getallen kunnen worden gescheiden door elk leesteken. Daarom zouden we de dubbele punten kunnen vervangen door punten om hetzelfde resultaat te krijgen:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.25.35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.30.25' DAY_MINUTE) AS "DAY_MINUTE";
Resultaat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+