MariaDB zawiera kilka jednostek daty i godziny, których można używać podczas pracy z wartościami daty i godziny. Na przykład MONTH
jest jednostką, a HOUR
to kolejna jednostka.
Niektóre jednostki są jednostkami złożonymi. Jednostki złożone mają miejsce, gdy dwie jednostki łączą się w jedną. Konwencja nazewnictwa jest taka, że każda nazwa jednostki jest oddzielona podkreśleniem. Na przykład MINUTE_SECOND
dotyczy minut i sekund.
Poniżej znajduje się kilka przykładów, które pokazują, jak działają jednostki złożone w MariaDB.
Lista jednostek złożonych
Po pierwsze, oto lista jednostek złożonych dostępnych w MariaDB:
Jednostka | Opis |
---|---|
SECOND_MICROSECOND | Sekundy.Mikrosekundy |
MINUTE_MICROSECOND | Minuty.Sekundy.Mikrosekundy |
MINUTE_SECOND | Minuty.Sekundy |
HOUR_MICROSECOND | Godziny.Minuty.Sekundy.Mikrosekundy |
HOUR_SECOND | Godziny.Minuty.Sekundy |
HOUR_MINUTE | Godziny.Minuty |
DAY_MICROSECOND | Dni Godziny.Minuty.Sekundy.Mikrosekundy |
DAY_SECOND | Dni Godziny.Minuty.Sekundy |
DAY_MINUTE | Dni Godziny.Minuty |
DAY_HOUR | Dni Godziny |
YEAR_MONTH | Lata-miesiące |
Już samo spojrzenie na ich nazwiska daje całkiem niezłą wskazówkę, co robią.
Jednostki złożone (jak w przypadku każdej jednostki daty/czasu) mogą być używane podczas wyodrębniania części wartości daty/czasu, a także podczas wykonywania czynności takich jak dodawanie i odejmowanie przedziału czasu od wartości daty/czasu.
Można ich używać z +
i -
operatory podczas wykonywania arytmetyki na datach z funkcjami takimi jak ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
i TIMESTAMPDIFF()
.
Mogą być również używane w ON SCHEDULE
klauzula CREATE_EVENT()
i ALTER_EVENT()
funkcje.
Przykład – wyodrębnianie jednostek złożonych
Jednostki daty i czasu mogą być używane z wieloma różnymi funkcjami oraz w różnych innych kontekstach. Jedną z funkcji akceptujących te jednostki jest EXTRACT()
funkcjonować. Ta funkcja zwraca określoną jednostkę daty/czasu z podanej wartości daty lub czasu.
Oto przykład użycia jednostki złożonej do wyodrębnienia roku i miesiąca z daty:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Wynik:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Widzimy, że rok i miesiąc są zwracane jako jedna wartość.
Przykład – dodawanie/odejmowanie jednostek złożonych
Jednostki złożone mogą być również używane do dodawania i odejmowania przedziałów daty i czasu.
Przykład:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Wynik:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
W tym przypadku należy pamiętać o dwóch częściach w odniesieniu do jednostki złożonej.
Podobnie jak w poprzednim przykładzie, użyliśmy jednostki złożonej (w tym przypadku DAY_HOUR
). Jeśli chodzi o rzeczywisty odstęp do dodania, użyliśmy dwukropka do oddzielenia każdej strony jednostki złożonej.
W tym przypadku określiliśmy '2:08'
, który dodał 2 dni i 8 godzin do wartości daty. Oryginalna data nie zawiera części czasowej, dlatego zakłada się, że początkowy czas to 00:00:00
.
MariaDB rozsądnie wybacza surowość formatu. Ten sam efekt możemy uzyskać, używając różnych separatorów, a także pomijając wiodące zero.
Oto kolejny przykład, w którym użyto DATE_ADD()
funkcja z różnymi przedziałami czasowymi:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Wynik:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Oto kilka przykładów różnych jednostek złożonych:
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";
Wynik:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+