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 | +---------------------+---------------------+---------------------+