MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TIMESTAMPADD() funciona no MariaDB


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:
  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

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