No MariaDB,
FROM_UNIXTIME() é uma função de data e hora integrada que retorna um valor de data e hora com base em um determinado timestamp unix. Você passa o timestamp unix para a função quando a chama.
O resultado é retornado em
'YYYY-MM-DD HH:MM:SS' ou YYYYMMDDHHMMSS.uuuuuu formato, dependendo se a função é usada em uma string ou contexto numérico. O valor é expresso no fuso horário atual.
Sintaxe
A função pode ser usada das seguintes maneiras:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format) Onde
unix_timestamp é o timestamp unix e o format é uma string de formato opcional para formatar o resultado. Exemplo
Aqui está um exemplo:
SELECT FROM_UNIXTIME(1721428321); Resultado:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Microsegundos
Aqui está um exemplo que inclui microssegundos:
SELECT FROM_UNIXTIME(1721428321.123456); Resultado:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Contexto Numérico
Ao usar
FROM_UNIXTIME() em um contexto numérico, o resultado é retornado em YYYYMMDDHHMMSS.uuuuuu formato:SELECT FROM_UNIXTIME(1721428321.123456) + 0; Resultado:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Formatar o resultado
Aqui está um exemplo de como passar uma string de formato para formatar o resultado:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y'); Resultado:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Veja MariaDB Date Format Strings para uma lista de strings de formato que podem ser usadas com o
FROM_UNIXTIME() função. Limite de carimbo de data/hora
Os carimbos de data/hora no MariaDB têm um valor máximo de
2147483647 . Isso se deve à limitação subjacente de 32 bits. Usar a função em um timestamp além disso resulta em null sendo devolvido. Aqui está um exemplo que demonstra essa limitação:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648); Resultado:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Fuso horário
O resultado de
FROM_UNIXTIME() é expresso no fuso horário atual. Os exemplos a seguir usam o mesmo timestamp unix com fusos horários diferentes:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647); Resultado:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Mude para outro fuso horário e execute-o novamente:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647); Resultado:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Carimbo de data e hora Unix atual
Aqui está um exemplo que usa o
UNIX_TIMESTAMP() função para retornar o timestamp atual do unix:SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP()); Resultado:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Argumento ausente
Chamando
FROM_UNIXTIME() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT FROM_UNIXTIME(); Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
E outro exemplo:
SELECT FROM_UNIXTIME( 1, 2, 3 ); Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'