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