Här är en lista över enheter som kan användas i MySQL datumtid och intervallfunktioner.
unit Värde | Förväntat expr Format |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
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' |
Dessa enheter kan användas med +
och -
operatorer när man utför aritmetik på datum, med funktioner som ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, och EXTRACT()
.
De kan också användas i ON SCHEDULE
sats i CREATE_EVENT()
och ALTER_EVENT()
funktioner.
De första nio enheterna kan användas med TIMESTAMPADD()
och TIMESTAMPDIFF()
(dessa två funktioner stöder inte de sammansatta enheterna i skrivande stund).
Enheterna som innehåller ett understreck är sammansatta enheter. Dessa består av mer än en bastidsenhet. Dessa kan ses som ett kortfattat sätt att specificera flera enheter på en gång. Varje enhet kan separeras med valfritt skiljetecken.
Exempel
Här är ett exempel på hur du lägger till ett år till ett datum och tid-uttryck:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Resultat:
2036-01-01 01:30:45
I det här fallet använder vi +
operatör för att utföra tillägget.
Datetime-funktioner
Datum- och tidsenheterna kan användas med olika datumfunktioner.
Här är den med DATE_ADD()
funktion:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Resultat:
2036-01-01 01:30:45
Kompositenheter
Här är ett exempel som använder sammansatta enheter:
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";
Resultat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
Heltalen kan separeras med valfritt skiljetecken. Därför kunde vi ersätta kolon med perioder för att få samma resultat:
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";
Resultat:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+