In MySQL, potete usare la funzione DATE_SUB()
per sottrarre una determinata quantità di tempo da una data. Per esempio, potete usarla per sottrarre 7 giorni da una data. Potete specificare se sottrarre giorni, settimane, mesi, trimestri, anni, ecc. Potete anche sottrarre un valore temporale, come secondi, microsecondi, ecc.
Questa funzione è simile a DATE_ADD()
, eccetto che sottrae da una data invece di aggiungere ad essa.
Sintassi
La sintassi è la seguente:
DATE_SUB(date,INTERVAL expr unit)
Esempio 1 – Uso di base
Ecco un esempio di uso.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Risultato:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Questo esempio sottrae 5 giorni dalla data fornita dal primo argomento.
Esempio 2 – Altre unità di data
È possibile specificare le unità in giorni, settimane, mesi, anni, ecc. Ecco alcuni esempi.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Risultato:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Esempio 3 – Unità di tempo
Puoi anche sottrarre unità di tempo da un valore di data/ora. Ecco un esempio.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Risultato:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
E puoi specificare più unità allo stesso tempo. Per esempio, potete specificare ore e minuti. In questo modo.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Risultato:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Valori previsti
La seguente tabella mostra i valori di unità validi e il loro formato previsto.
unit Valore |
Espettato expr Formato |
---|---|
MICROSECONDO | MICROSECONDS |
SECONDO | SECONDI |
MINUTO | MINUTI |
ORA | ORE |
GIORNO | GIORNI |
SETTIMANA | SETTIMANE |
MESE | MESI |
TRIMESTRE | QUARTIERE |
ANNO | ANNI |
SECONDO_MICROSECONDO | ‘SECONDI.MICROSECONDI’ |
MINUTO_MICROSECONDO | ‘MINUTI:SECONDI.MICROSECONDI’ |
MINUTO_SECONDO | ‘MINUTI:SECONDI’ |
ORA_MICROSECONDO | ‘ORE:MINUTI:SECONDI.MICROSECONDI’ |
ORA_SECONDO | ‘ORE:MINUTI:SECONDI’ |
ORA_MINUTO | ‘ORE:MINUTI’ |
GIORNO_MICROSECONDO | ‘GIORNI ORE:MINUTI:SECONDI.MICROSECONDI’ |
GIORNO_SECONDO | ‘GIORNI ORE:MINUTI:SECONDI’ |
GIORNO_MINUTO | ‘GIORNI ORE:MINUTI’ |
GIORNO_ORA | ‘GIORNI ORE’ |
ANNO_MESE | ‘ANNI-MESI’ |
Puoi anche usare la funzione SUBDATE()
per fare la stessa cosa (è un sinonimo della funzione DATE_SUB()
quando usi la stessa sintassi).
Inoltre, la sintassi di SUBDATE()
ha una seconda forma, che è un metodo stenografico per sottrarre un certo numero di giorni da una data. Per maggiori informazioni, vedere Esempi di SUBDATE() in MySQL.