In MySQL, puoi usare DATE_SUB() funzione per sottrarre una determinata quantità di tempo da una data. Ad esempio, puoi usarlo per sottrarre 7 giorni da una determinata data. Puoi specificare se sottrarre giorni, settimane, mesi, trimestri, anni, ecc. Puoi anche sottrarre un valore temporale, come secondi, microsecondi, ecc.
Questa funzione è simile a DATE_ADD() , tranne per il fatto che sottrae da una data invece di aggiungerla.
Sintassi
La sintassi è questa:
DATE_SUB(date,INTERVAL expr unit)
Esempio 1 – Utilizzo di base
Ecco un esempio di utilizzo.
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
Puoi 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à contemporaneamente. Ad esempio, puoi specificare ore e minuti. Così.
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 tabella seguente mostra i valori unitari validi e il loro formato previsto.
unit Valore | Previsto expr Formato |
|---|---|
| MICROSECONDO | MICROSECONDI |
| SECONDA | SECONDI |
| MINUTO | MINUTI |
| ORA | ORE |
| GIORNO | GIORNI |
| SETTIMANA | SETTIMANE |
| MESE | MESI |
| TRIMESTRE | TRIMESTRE |
| ANNO | ANNI |
| SECOND_MICROSECONDO | 'SECONDI.MICROSECONDI' |
| MINUTE_MICROSECOND | 'MINUTI:SECONDI.MICROSECONDI' |
| MINUTE_SECOND | 'MINUTI:SECONDI' |
| ORA_MICROSECOND | 'ORE:MINUTI:SECONDI.MICROSECONDI' |
| ORA_SECONDA | 'ORE:MINUTI:SECONDI' |
| ORA_MINUTO | 'ORE:MINUTI' |
| DAY_MICROSECONDO | 'GIORNI ORE:MINUTI:SECONDI.MICROSECONDI' |
| DAY_SECOND | 'GIORNI ORE:MINUTI:SECONDI' |
| DAY_MINUTE | 'GIORNI ORE:MINUTI' |
| DAY_HOUR | 'ORE DEI GIORNI' |
| ANNO_MESE | 'ANNI-MESI' |
Puoi anche utilizzare il SUBDATE() funzione per fare la stessa cosa (è un sinonimo di DATE_SUB() funzione quando si utilizza la stessa sintassi).
Inoltre, la sintassi di SUBDATE() ha una seconda forma, che è un metodo abbreviato per sottrarre un certo numero di giorni da una data. Per ulteriori informazioni, vedere Esempi di SUBDATE() in MySQL.