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'