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'