Ето списък с единици, които могат да се използват във функциите за дата и време на MySQL и интервал.
unit Стойност | Очакван expr Формат |
---|---|
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' |
Тези единици могат да се използват с +
и -
оператори при извършване на аритметика на дати, с функции като ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
и EXTRACT()
.
Те могат да се използват и в ON SCHEDULE
клауза на CREATE_EVENT()
и ALTER_EVENT()
функции.
Първите девет единици могат да се използват с TIMESTAMPADD()
и TIMESTAMPDIFF()
(тези две функции не поддържат съставните единици към момента на писане).
Единиците, съдържащи долна черта, са съставни единици. Те се състоят от повече от една базова времева единица. Те могат да се разглеждат като съкратен начин за определяне на множество единици наведнъж. Всяка единица може да бъде разделена с произволен препинателен знак.
Примери
Ето пример за добавяне на година към израз за дата и час:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Резултат:
2036-01-01 01:30:45
В този случай използваме +
оператор за извършване на добавянето.
Функции за дата и час
Единиците за дата и час могат да се използват с различни функции за дата.
Ето го с DATE_ADD()
функция:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Резултат:
2036-01-01 01:30:45
Съставни единици
Ето пример, който използва съставни единици:
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";
Резултат:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
Целите числа могат да бъдат разделени с произволен препинателен знак. Следователно бихме могли да заменим двоеточия с точки, за да получим същия резултат:
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";
Резултат:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+