Zde je seznam jednotek, které lze použít ve funkcích datatime a intervalu MySQL.
unit Hodnota | Očekáváno expr Formát |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
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' |
Tyto jednotky lze použít s +
a -
operátory při provádění aritmetiky na datech, s funkcemi jako ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
a EXTRACT()
.
Mohou být také použity v ON SCHEDULE
klauzule CREATE_EVENT()
a ALTER_EVENT()
funkce.
Prvních devět jednotek lze použít s TIMESTAMPADD()
a TIMESTAMPDIFF()
(tyto dvě funkce nepodporují složené jednotky v době psaní).
Jednotky obsahující podtržítko jsou složené jednotky. Ty se skládají z více než jedné základní časové jednotky. Lze je považovat za zkrácený způsob, jak zadat více jednotek najednou. Každá jednotka může být oddělena libovolným interpunkčním znakem.
Příklady
Zde je příklad přidání roku k výrazu datetime:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Výsledek:
2036-01-01 01:30:45
V tomto případě použijeme +
operátora, který provede sčítání.
Funkce data a času
Jednotky data a času lze použít s různými funkcemi data.
Zde je to s DATE_ADD()
funkce:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Výsledek:
2036-01-01 01:30:45
Složené jednotky
Zde je příklad použití složených jednotek:
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";
Výsledek:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
Celá čísla lze oddělit libovolným interpunkčním znaménkem. Proto bychom mohli nahradit dvojtečky tečkami, abychom získali stejný výsledek:
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";
Výsledek:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+