MariaDB obsahuje spoustu jednotek data a času, které můžete použít při práci s hodnotami data a času. Například MONTH
je jednotka a HOUR
je další jednotka.
Některé jednotky jsou složené jednotky. Složené jednotky jsou, když se dvě jednotky spojí do jedné. Konvence pojmenování je taková, že každý název jednotky je oddělen podtržítkem. Například MINUTE_SECOND
je na minuty a sekundy.
Níže je uvedeno několik příkladů, které demonstrují, jak složené jednotky fungují v MariaDB.
Seznam složených jednotek
Nejprve je zde seznam složených jednotek dostupných v MariaDB:
Jednotka | Popis |
---|---|
SECOND_MICROSECOND | Sekundy.Mikrosekundy |
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 | Dny Hodiny.Minuty.Sekundy.Mikrosekundy |
DAY_SECOND | Dny Hodiny.Minuty.Sekundy |
DAY_MINUTE | Dny Hodiny.Minuty |
DAY_HOUR | Dny Hodiny |
YEAR_MONTH | roky-měsíce |
Pouhý pohled na jejich jména poskytuje docela dobré vodítko o tom, co dělají.
Složené jednotky (jako každá jiná jednotka data/času) lze použít při extrakci částí hodnoty data/času a také při provádění věcí, jako je přičítání a odečítání časového intervalu od hodnoty data/času.
Ty lze použít s +
a -
operátory při provádění aritmetiky na datech, s funkcemi jako ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
a TIMESTAMPDIFF()
.
Mohou být také použity v ON SCHEDULE
klauzule CREATE_EVENT()
a ALTER_EVENT()
funkce.
Příklad – Extrakce složených jednotek
Jednotky data a času lze použít s řadou různých funkcí a v různých jiných kontextech. Jednou z funkcí, které přijímají tyto jednotky, je EXTRACT()
funkce. Tato funkce vrací zadanou jednotku data/času z dané hodnoty data nebo data a času.
Zde je příklad použití složené jednotky k extrakci roku a měsíce z data:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Výsledek:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Vidíme, že rok a měsíc jsou vráceny jako jedna hodnota.
Příklad – sčítání/odečítání složených jednotek
Složené jednotky lze také použít k přidávání a odečítání datových a časových intervalů.
Příklad:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Výsledek:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
V tomto případě existují dvě části, které je třeba mít na paměti, pokud jde o kompozitní jednotku.
Stejně jako v předchozím příkladu jsme použili složenou jednotku (v tomto případě DAY_HOUR
). S ohledem na skutečný interval, který se má přidat, jsme použili dvojtečku k oddělení každé strany složené jednotky.
V tomto případě jsme zadali '2:08'
, což k hodnotě data přidalo 2 dny a 8 hodin. Původní datum nemá časovou část, a proto se předpokládá, že počáteční čas je 00:00:00
.
MariaDB je přiměřeně shovívavá s přísností formátu. Stejného efektu můžeme dosáhnout použitím různých oddělovačů a také vynecháním úvodní nuly.
Zde je další příklad, který používá DATE_ADD()
funkce s různými časovými intervaly:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Výsledek:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Zde je několik dalších příkladů různých složených jednotek:
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";
Výsledek:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+