Ecco un elenco di unità che possono essere utilizzate nelle funzioni datatime e intervallo di MySQL.
unit Valore | Previsto expr Formato |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
Queste unità possono essere utilizzate con il +
e -
operatori quando si eseguono operazioni aritmetiche sulle date, con funzioni come ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
e EXTRACT()
.
Possono essere utilizzati anche in ON SCHEDULE
clausola del CREATE_EVENT()
e ALTER_EVENT()
funzioni.
Le prime nove unità possono essere utilizzate con TIMESTAMPADD()
e TIMESTAMPDIFF()
(queste due funzioni non supportano le unità composite al momento della scrittura).
Le unità che contengono un trattino basso sono unità composite. Questi sono costituiti da più di un'unità di tempo di base. Questi possono essere pensati come un modo abbreviato per specificare più unità in una volta sola. Ogni unità può essere separata da qualsiasi carattere di punteggiatura.
Esempi
Ecco un esempio di aggiunta di un anno a un'espressione datetime:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Risultato:
2036-01-01 01:30:45
In questo caso utilizziamo il +
operatore per eseguire l'aggiunta.
Funzioni data/ora
Le unità di data e ora possono essere utilizzate con varie funzioni di data.
Eccolo con il DATE_ADD()
funzione:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Risultato:
2036-01-01 01:30:45
Unità composite
Ecco un esempio che utilizza unità composite:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:30:25' DAY_MINUTE) AS "DAY_MINUTE";
Risultato:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
I numeri interi possono essere separati da qualsiasi carattere di punteggiatura. Pertanto, potremmo sostituire i due punti con punti per ottenere lo stesso risultato:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.25.35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.30.25' DAY_MINUTE) AS "DAY_MINUTE";
Risultato:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+