MariaDB
 sql >> Database >  >> RDS >> MariaDB

Spiegazione delle unità di data e ora composite di MariaDB

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