sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona FROM_UNIXTIME() en MariaDB

En MariaDB, FROM_UNIXTIME() es una función de fecha y hora incorporada que devuelve un valor de fecha y hora basado en una marca de tiempo de Unix dada.

Pasas la marca de tiempo de Unix a la función cuando la llamas.

El resultado se devuelve en 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS.uuuuuu dependiendo de si la función se usa en un contexto de cadena o numérico.

El valor se expresa en la zona horaria actual.

Sintaxis

La función se puede utilizar de las siguientes maneras:

FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)

Donde unix_timestamp es la marca de tiempo de Unix y format es una cadena de formato opcional para formatear el resultado.

Ejemplo

He aquí un ejemplo:

SELECT FROM_UNIXTIME(1721428321);

Resultado:

+---------------------------+
| FROM_UNIXTIME(1721428321) |
+---------------------------+
| 2024-07-20 08:32:01       |
+---------------------------+

Microsegundos

Aquí hay un ejemplo que incluye microsegundos:

SELECT FROM_UNIXTIME(1721428321.123456);

Resultado:

+----------------------------------+
| FROM_UNIXTIME(1721428321.123456) |
+----------------------------------+
| 2024-07-20 08:32:01.123456       |
+----------------------------------+

Contexto numérico

Al usar FROM_UNIXTIME() en un contexto numérico, el resultado se devuelve en YYYYMMDDHHMMSS.uuuuuu formato:

SELECT FROM_UNIXTIME(1721428321.123456) + 0;

Resultado:

+--------------------------------------+
| FROM_UNIXTIME(1721428321.123456) + 0 |
+--------------------------------------+
|                20240720083201.123456 |
+--------------------------------------+

Dar formato al resultado

Este es un ejemplo de pasar una cadena de formato para formatear el resultado:

SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');

Resultado:

+-------------------------------------------+
| FROM_UNIXTIME(1721428321, '%W, %D %M %Y') |
+-------------------------------------------+
| Saturday, 20th July 2024                  |
+-------------------------------------------+

Consulte Cadenas de formato de fecha de MariaDB para obtener una lista de cadenas de formato que se pueden usar con FROM_UNIXTIME() función.

Límite de marca de tiempo

Las marcas de tiempo en MariaDB tienen un valor máximo de 2147483647 . Esto se debe a la limitación subyacente de 32 bits. El uso de la función en una marca de tiempo más allá de esto da como resultado null siendo devuelto.

Aquí hay un ejemplo que demuestra esta limitación:

SELECT 
    FROM_UNIXTIME(2147483647),
    FROM_UNIXTIME(2147483648);

Resultado:

+---------------------------+---------------------------+
| FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) |
+---------------------------+---------------------------+
| 2038-01-19 13:14:07       | NULL                      |
+---------------------------+---------------------------+

Zona horaria

El resultado de FROM_UNIXTIME() se expresa en la zona horaria actual.

Los siguientes ejemplos usan la misma marca de tiempo de Unix con diferentes zonas horarias:

SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);

Resultado:

+---------------------------+
| FROM_UNIXTIME(2147483647) |
+---------------------------+
| 2038-01-18 22:14:07       |
+---------------------------+

Cambie a otra zona horaria y vuelva a ejecutarlo:

SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);

Resultado:

+---------------------------+
| FROM_UNIXTIME(2147483647) |
+---------------------------+
| 2038-01-19 03:14:07       |
+---------------------------+

Marca de tiempo Unix actual

Aquí hay un ejemplo que usa el UNIX_TIMESTAMP() función para devolver la marca de tiempo actual de Unix:

SELECT
    UNIX_TIMESTAMP(),
    FROM_UNIXTIME(UNIX_TIMESTAMP());

Resultado:

+------------------+---------------------------------+
| UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) |
+------------------+---------------------------------+
|       1621734047 | 2021-05-23 11:40:47             |
+------------------+---------------------------------+

Argumento faltante

Llamando a FROM_UNIXTIME() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT FROM_UNIXTIME();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'

Y otro ejemplo:

SELECT FROM_UNIXTIME( 1, 2, 3 );

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'