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