In MariaDB, TIMESTAMPADD()
è una funzione di data e ora incorporata che aggiunge un intervallo di espressioni intere a una data espressione o data e ora.
Sintassi
La sintassi è questa:
TIMESTAMPADD(unit,interval,datetime_expr)
Dove unit
è uno dei seguenti valori:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Le unità possono opzionalmente avere un prefisso SQL_TSI_
.
Esempio
Ecco un esempio da dimostrare:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Risultato:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Valori di data e ora
Ecco un esempio di passaggio di un valore datetime:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Risultato:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Aggiunta di un SQL_TSI_
Prefisso
L'unità può includere un SQL_TSI_
prefisso se richiesto:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Risultato:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Microsecondi
Ecco un esempio che aggiunge microsecondi:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Risultato:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Intervalli negativi
Gli intervalli negativi sono validi:
Esempio:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Risultato:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Data attuale
Possiamo passare NOW()
come argomento datetime per utilizzare la data e l'ora correnti:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Risultato:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Argomento mancante
Chiamando TIMESTAMPADD()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT TIMESTAMPADD();
Risultato:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
E un altro esempio:
SELECT TIMESTAMPADD(10, '2020-12-09');
Risultato:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1