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

Come funziona ADDDATE() in MariaDB

In MariaDB, ADDDATE() è una funzione di data e ora incorporata che esegue l'aritmetica della data.

Consente di modificare una data specificando la data, l'unità da aggiungere e l'importo da aggiungere. Puoi passare un importo negativo se devi sottrarre la data di un certo intervallo.

ADDDATE() ha anche una sintassi di scelta rapida che ti consente di aggiungere un determinato numero di giorni alla data.

Sintassi

Il ADDDATE() la funzione ha due sintassi.

Sintassi 1:

ADDDATE(expr,days)

Dove expr è la data e days è il numero di giorni da aggiungere.

Sintassi 2:

ADDDATE(date,INTERVAL expr unit)

Dove date è la data da modificare, expr è l'importo da aggiungere e unit è l'unità da aggiungere (es. secondi, minuti, ecc.).

Quando si utilizza questa sintassi, ADDDATE() è sinonimo di DATE_ADD() .

Esempio – Sintassi 1

Ecco un esempio di utilizzo della prima sintassi:

SELECT ADDDATE('2021-05-01', 1);

Risultato:

+--------------------------+
| ADDDATE('2021-05-01', 1) |
+--------------------------+
| 2021-05-02               |
+--------------------------+

Possiamo anche includere la parte del tempo, se necessario:

SELECT ADDDATE('2021-05-01 10:00:00', 1);

Risultato:

+-----------------------------------+
| ADDDATE('2021-05-01 10:00:00', 1) |
+-----------------------------------+
| 2021-05-02 10:00:00               |
+-----------------------------------+

Ecco due modi alternativi per fare la stessa cosa:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";

Risultato:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |
+---------------------+---------------------+

Esempio – Sintassi 2

Ecco un esempio di utilizzo della seconda sintassi:

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);

Risultato:

+-------------------------------------------------+
| ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) |
+-------------------------------------------------+
| 2021-05-31 11:00:00                             |
+-------------------------------------------------+

Questa sintassi ci consente di aggiungere altre unità alla data (cioè non solo i giorni). Qui ho aggiunto un'ora alla data, ma avrei potuto altrettanto facilmente aggiungere minuti, secondi, mesi, giorni, anni, ecc. Continua a leggere per esempi.

Ecco due metodi alternativi per ottenere lo stesso risultato dell'esempio precedente:

SELECT 
    DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";

Risultato:

+---------------------+---------------------+
| Result 1            | Result 2            |
+---------------------+---------------------+
| 2021-05-31 11:00:00 | 2021-05-31 11:00:00 |
+---------------------+---------------------+

Intervalli negativi

Fornire un intervallo negativo sottrae tale importo dalla data.

Esempio:

SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);

Risultato:

+--------------------------------------------------+
| ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) |
+--------------------------------------------------+
| 2021-05-31 09:00:00                              |
+--------------------------------------------------+

Altre unità

Ecco un esempio che aggiunge un intervallo di 1 alle varie unità di data e ora:

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;

Risultato (usando l'output verticale):

       YEAR: 2022-05-01 10:00:00
      MONTH: 2021-06-01 10:00:00
        DAY: 2021-05-02 10:00:00
       HOUR: 2021-05-01 11:00:00
     MINUTE: 2021-05-01 10:01:00
     SECOND: 2021-05-01 10:00:01
MICROSECOND: 2021-05-01 10:00:00.000001

Unità composite

Ecco un esempio che utilizza unità composite:

SELECT 
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    ADDDATE('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 |
+---------------------+---------------------+---------------------+

Date nulle

Passaggio null per la data ritorna null :

SELECT ADDDATE(null, INTERVAL 1 YEAR);

Risultato:

+--------------------------------+
| ADDDATE(null, INTERVAL 1 YEAR) |
+--------------------------------+
| NULL                           |
+--------------------------------+

Argomento mancante

Chiamando ADDDATE() con il numero errato di argomenti o senza passare alcun argomento genera un errore:

SELECT ADDDATE();

Risultato:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1