MariaDB включва куп единици за дата и час, които можете да използвате, когато работите със стойности за дата и час. Например MONTH
е единица и HOUR
е друга единица.
Някои единици са съставни единици. Съставните единици са, когато две единици се комбинират в едно. Конвенцията за именуване е, че всяко име на единица е разделено с долна черта. Например MINUTE_SECOND
е за минути и секунди.
По-долу са дадени няколко примера, които демонстрират как работят съставните единици в MariaDB.
Списък на съставните единици
Първо, ето списък на съставните единици, налични в MariaDB:
Единица | Описание |
---|---|
SECOND_MICROSECOND | Секунди.Микросекунди |
MINUTE_MICROSECOND | Минути.Секунди.Микросекунди |
MINUTE_SECOND | Минути.Секунди |
HOUR_MICROSECOND | Часове.Минути.Секунди.Микросекунди |
HOUR_SECOND | Часове.Минути.Секунди |
HOUR_MINUTE | Часове.Минути |
DAY_MICROSECOND | Дни Часове.Минути.Секунди.Микросекунди |
DAY_SECOND | Дни Часове.Минути.Секунди |
DAY_MINUTE | Дни Часове.Минути |
DAY_HOUR | Дни Часове |
YEAR_MONTH | Години-месеци |
Само гледането на имената им дава доста добра представа за това какво правят.
Съставните единици (както при всяка единица за дата/час) могат да се използват при извличане на части от стойност за дата/час, а също и когато правите неща като добавяне и изваждане на интервал от време към стойност за дата/час.
Те могат да се използват с +
и -
оператори при извършване на аритметика на дати, с функции като ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
и TIMESTAMPDIFF()
.
Те могат да се използват и в ON SCHEDULE
клауза на CREATE_EVENT()
и ALTER_EVENT()
функции.
Пример – Извличане на съставни единици
Единиците за дата и час могат да се използват с куп различни функции и в различни други контексти. Една от функциите, които приемат тези единици, е EXTRACT()
функция. Тази функция връща определена единица дата/час от дадена дата или стойност за дата и час.
Ето пример за използване на съставна единица за извличане на годината и месеца от дата:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Резултат:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Можем да видим, че годината и месецът се връщат като една стойност.
Пример – Добавяне/изваждане на съставни единици
Съставните единици могат да се използват и за добавяне и изваждане на интервали от дата и време.
Пример:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Резултат:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
В този случай има две части, които трябва да имате предвид по отношение на композитния модул.
Както в предишния пример, използвахме съставна единица (в този случай DAY_HOUR
). По отношение на действителния интервал за добавяне, ние използвахме двоеточие, за да разделим всяка страна на съставната единица.
В този случай посочихме '2:08'
, което добави 2 дни и 8 часа към стойността на датата. Оригиналната дата няма времева част и затова се приема, че първоначалният час е 00:00:00
.
MariaDB разумно прощава със строгостта на формата. Можем да постигнем същия ефект, като използваме различни разделители, а също и като пропуснем водещата нула.
Ето още един пример, който използва DATE_ADD()
функция с различни интервали от време:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Резултат:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Ето още няколко примера за различни съставни единици:
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";
Резултат:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+