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

Como TIMESTAMP() funciona no MariaDB


No MariaDB, TIMESTAMP() é uma função de data e hora integrada que retorna um valor de data e hora, com base em seu(s) argumento(s).

Ele pode ser usado com um argumento ou dois, como segue:
  • Quando usado com um argumento, ele retorna essa expressão de data ou data e hora como um valor de data e hora.
  • Quando usado com dois argumentos, adiciona o segundo argumento (hora) à primeira expressão (data ou datahora) e retorna o valor de data e hora resultante.

Sintaxe


Ele pode ser usado das duas maneiras a seguir:
TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

Onde expr1 é uma expressão de data ou data e hora e expr2 é uma expressão de tempo para adicionar a expr1 .

Exemplo


Segue um exemplo para demonstrar:
SELECT TIMESTAMP('2030-02-01');

Resultado:
+-------------------------+
| TIMESTAMP('2030-02-01') |
+-------------------------+
| 2030-02-01 00:00:00     |
+-------------------------+

Valores de data e hora


Aqui está um exemplo de como passar um valor de data e hora:
SELECT TIMESTAMP('2030-02-01 10:30:45');

Resultado:
+----------------------------------+
| TIMESTAMP('2030-02-01 10:30:45') |
+----------------------------------+
| 2030-02-01 10:30:45              |
+----------------------------------+

Segundo argumento


Aqui está um exemplo que adiciona o segundo argumento ao primeiro:
SELECT TIMESTAMP('2030-02-01 10:30:45', '02:15:15');

Resultado:
+----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '02:15:15') |
+----------------------------------------------+
| 2030-02-01 12:46:00                          |
+----------------------------------------------+

Microsegundos


Aqui está um exemplo que adiciona microssegundos:
SELECT TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456');

Resultado:
+-----------------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456') |
+-----------------------------------------------------+
| 2030-02-01 10:30:45.123456                          |
+-----------------------------------------------------+

Tempos negativos


Tempos negativos são válidos:

Exemplo:
SELECT TIMESTAMP('2030-02-01 10:30:45', '-09:20:00');

Resultado:
+-----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '-09:20:00') |
+-----------------------------------------------+
| 2030-02-01 01:10:45                           |
+-----------------------------------------------+

Data atual


Podemos passar NOW() como argumento datetime para usar a data e hora atuais:
SELECT 
    NOW(),
    TIMESTAMP(NOW(), '10:30:45');

Resultado:
+---------------------+------------------------------+
| NOW()               | TIMESTAMP(NOW(), '10:30:45') |
+---------------------+------------------------------+
| 2021-05-28 09:25:09 | 2021-05-28 19:55:54          |
+---------------------+------------------------------+

Argumentos inválidos


Quando passado um argumento inválido, TIMESTAMP() retorna null com um aviso:
SELECT TIMESTAMP('Ten Thirty AM');

Resultado:
+----------------------------+
| TIMESTAMP('Ten Thirty AM') |
+----------------------------+
| NULL                       |
+----------------------------+
1 row in set, 1 warning (0.004 sec)

Confira o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Argumento ausente


Chamando TIMESTAMP() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT TIMESTAMP();

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 TIMESTAMP('2020-12-09', '06:30:45', '06:30:45');

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 ' '06:30:45')' at line 1