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

Como FROM_UNIXTIME() funciona no MariaDB


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'