MariaDB include una serie di unità di data e ora che puoi utilizzare quando lavori con i valori di data e ora. Ad esempio, MONTH
è un'unità e HOUR
è un'altra unità.
Alcune unità sono unità composite. Le unità composite sono quando due unità vengono combinate in una. La convenzione di denominazione prevede che ogni nome di unità sia separato da un trattino basso. Ad esempio, MINUTE_SECOND
è per minuti e secondi.
Di seguito sono riportati alcuni esempi che dimostrano come funzionano le unità composite in MariaDB.
Elenco delle unità composite
Innanzitutto, ecco un elenco delle unità composite disponibili in MariaDB:
Unità | Descrizione |
---|---|
SECOND_MICROSECOND | Secondi.Microsecondi |
MINUTE_MICROSECOND | Minuti.Secondi.Microsecondi |
MINUTE_SECOND | Minuti.Secondi |
HOUR_MICROSECOND | Ore.Minuti.Secondi.Microsecondi |
HOUR_SECOND | Ore.Minuti.Secondi |
HOUR_MINUTE | Ore.Minuti |
DAY_MICROSECOND | Giorni Ore.Minuti.Secondi.Microsecondi |
DAY_SECOND | Giorni Ore.Minuti.Secondi |
DAY_MINUTE | Giorni Ore.Minuti |
DAY_HOUR | Giorni Orari |
YEAR_MONTH | Anni-mesi |
Basta guardare i loro nomi fornisce un indizio abbastanza buono su quello che fanno.
Le unità composite (come con qualsiasi unità di data/ora) possono essere utilizzate durante l'estrazione di parti di un valore di data/ora e anche quando si eseguono operazioni come l'aggiunta e la sottrazione di un intervallo di tempo a un valore di data/ora.
Questi possono essere utilizzati con il +
e -
operatori quando si eseguono operazioni aritmetiche sulle date, con funzioni come ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
e TIMESTAMPDIFF()
.
Possono essere utilizzati anche in ON SCHEDULE
clausola del CREATE_EVENT()
e ALTER_EVENT()
funzioni.
Esempio:estrazione di unità composite
Le unità di data e ora possono essere utilizzate con un sacco di funzioni diverse e in vari altri contesti. Una delle funzioni che accettano queste unità è EXTRACT()
funzione. Questa funzione restituisce un'unità di data/ora specificata da un determinato valore di data o ora.
Ecco un esempio di utilizzo di un'unità composita per estrarre l'anno e il mese da una data:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Risultato:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Possiamo vedere che l'anno e il mese vengono restituiti come un unico valore.
Esempio:addizione/sottrazione di unità composite
Le unità composite possono essere utilizzate anche per aggiungere e sottrarre date e intervalli di tempo.
Esempio:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Risultato:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
In questo caso, ci sono due parti di cui tenere conto per quanto riguarda l'unità composita.
Come nell'esempio precedente, abbiamo utilizzato un'unità composita (in questo caso DAY_HOUR
). Per quanto riguarda l'intervallo effettivo da aggiungere, abbiamo utilizzato i due punti per separare ciascun lato dell'unità composita.
In questo caso abbiamo specificato '2:08'
, che ha aggiunto 2 giorni e 8 ore al valore della data. La data originale non ha una parte dell'ora, quindi si presume che l'ora iniziale sia 00:00:00
.
MariaDB è ragionevolmente clemente con la severità del formato. Possiamo ottenere lo stesso effetto utilizzando diversi separatori e anche omettendo lo zero iniziale.
Ecco un altro esempio che utilizza DATE_ADD()
funzione con vari intervalli di tempo:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Risultato:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Ecco alcuni altri esempi di varie unità composite:
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";
Risultato:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+