No MariaDB,
TIMESTAMPADD() é uma função de data e hora integrada que adiciona um intervalo de expressão de inteiro a uma determinada expressão de data ou data/hora. Sintaxe
A sintaxe fica assim:
TIMESTAMPADD(unit,interval,datetime_expr) Onde
unit é um dos seguintes valores:MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEAR
As unidades podem opcionalmente ter um prefixo de
SQL_TSI_ . Exemplo
Segue um exemplo para demonstrar:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01'); Resultado:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Valores de data e hora
Aqui está um exemplo de como passar um valor de data e hora:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45'); Resultado:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Adicionando um SQL_TSI_ Prefixo
A unidade pode incluir um
SQL_TSI_ prefixo se necessário:SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01'); Resultado:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Microsegundos
Aqui está um exemplo que adiciona microssegundos:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45'); Resultado:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Intervalos negativos
Intervalos negativos são válidos:
Exemplo:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01'); Resultado:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Data atual
Podemos passar
NOW() como argumento datetime para usar a data e hora atuais:SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW()); Resultado:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Argumento ausente
Chamando
TIMESTAMPADD() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT TIMESTAMPADD(); Resultado:
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 outro exemplo:
SELECT TIMESTAMPADD(10, '2020-12-09'); Resultado:
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