No MariaDB,
UNIX_TIMESTAMP()
é uma função interna de data e hora que retorna um carimbo de data/hora do Unix, com base em seu argumento (ou falta de argumento). Funciona assim:
- Quando chamado sem um argumento, ele retorna um timestamp Unix (segundos desde '1970-01-01 00:00:00' UTC) como um inteiro sem sinal.
- Quando chamado com um argumento, ele retorna o valor do argumento como segundos desde '1970-01-01 00:00:00' UTC.
A função inversa de
UNIX_TIMESTAMP()
é FROM_UNIXTIME()
. Sintaxe
UNIX_TIMESTAMP()
pode ser chamado de duas maneiras:UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Onde
date
é uma string de data, uma string de data e hora, um carimbo de data/hora ou um número no formato YYMMDD
ou YYYYMMDD
. Exemplo – Sem um argumento
Aqui está um exemplo de chamada de
UNIX_TIMESTAMP()
sem argumento:SELECT UNIX_TIMESTAMP();
Resultado:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Isso nos diz que, quando executei essa instrução, 1622502492 segundos se passaram desde 1970-01-01 00:00:00.
Exemplo – Com um argumento
Aqui está um exemplo com um argumento:
SELECT UNIX_TIMESTAMP('1970-01-02');
Resultado:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
No exemplo a seguir, chamo
UNIX_TIMESTAMP()
duas vezes; uma vez sem argumento e uma vez com NOW()
como o argumento. SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Resultado:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
String de data e hora
No exemplo acima,
NOW()
retorna um valor de data e hora. Neste exemplo, forneço explicitamente uma string de data e hora:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Resultado:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Microsegundos
UNIX_TIMESTAMP()
suporta microssegundos:SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Resultado:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Datas numéricas
Datas numéricas são suportadas:
SELECT UNIX_TIMESTAMP(20201030);
Resultado:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Argumento inválido
Ao passar qualquer argumento inválido,
UNIX_TIMESTAMP()
retorna null
com um aviso:SELECT UNIX_TIMESTAMP('Homer');
Resultado:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Confira o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Muitos argumentos
Chamando
UNIX_TIMESTAMP()
com muitos argumentos resulta em um erro:SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'