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.