In MySQL, puoi usare SUBDATE()
funzione per sottrarre una determinata quantità di tempo da una data. Ad esempio, puoi usarlo per sottrarre 10 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.
Quando si utilizza la prima sintassi elencata di seguito, SUBDATE()
function è sinonimo di DATE_SUB()
funzione (simile a come ADDDATE()
è sinonimo di DATE_ADD()
quando si utilizza la stessa sintassi).
Sintassi
Puoi utilizzare questa funzione nei due modi seguenti:
SUBDATE(date,INTERVAL expr unit)
Oppure
SUBDATE(expr,days)
Esempio 1:la prima sintassi
Ecco un esempio di utilizzo della prima forma della sintassi.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Risultato:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Questo esempio sottrae 2 giorni dalla data fornita dal primo argomento.
Esempio 2 – La seconda sintassi
Questo esempio potrebbe essere riscritto come segue:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Risultato:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Questo utilizza la seconda forma della sintassi. Il secondo argomento è un numero intero che rappresenta quanti giorni devono essere sottratti dalla data fornita dal primo argomento.
Come accennato, SUBDATE()
è sinonimo di DATE_SUB()
, ma solo quando viene utilizzata la prima sintassi. La seconda sintassi è disponibile solo in SUBDATE()
.
Esempio 3 – Altre unità di data
Un vantaggio della prima forma della sintassi è che puoi specificare se sottrarre giorni, settimane, mesi, anni, ecc. Ecco alcuni esempi.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Risultato:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Esempio 4 – Unità di tempo
Puoi anche usare SUBDATE()
per sottrarre le unità di tempo da un valore di data/ora. Ecco un esempio.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Risultato:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00: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' |