En MariaDB, UNIX_TIMESTAMP()
es una función de fecha y hora incorporada que devuelve una marca de tiempo de Unix, según su argumento (o la falta de argumento).
Funciona así:
- Cuando se llama sin un argumento, devuelve una marca de tiempo de Unix (segundos desde '1970-01-01 00:00:00' UTC) como un número entero sin signo.
- Cuando se llama con un argumento, devuelve el valor del argumento en segundos desde '1970-01-01 00:00:00' UTC.
La función inversa de UNIX_TIMESTAMP()
es FROM_UNIXTIME()
.
Sintaxis
UNIX_TIMESTAMP()
se puede llamar de las dos formas siguientes:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Donde date
es una cadena de fecha, una cadena de fecha y hora, una marca de tiempo o un número con el formato YYMMDD
o YYYYMMDD
.
Ejemplo:sin argumento
Aquí hay un ejemplo de llamar a UNIX_TIMESTAMP()
sin argumento:
SELECT UNIX_TIMESTAMP();
Resultado:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Esto nos dice que cuando ejecuté esa declaración, habían pasado 1622502492 segundos desde 1970-01-01 00:00:00.
Ejemplo:con un argumento
Aquí hay un ejemplo con un argumento:
SELECT UNIX_TIMESTAMP('1970-01-02');
Resultado:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
En el siguiente ejemplo, llamo a UNIX_TIMESTAMP()
dos veces; una vez sin argumento, y una vez con NOW()
como argumento.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Resultado:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Cadena de fecha y hora
En el ejemplo anterior, NOW()
devuelve un valor de fecha y hora.
En este ejemplo, proporciono explícitamente una cadena de fecha y hora:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Resultado:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Microsegundos
UNIX_TIMESTAMP()
admite microsegundos:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Resultado:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Fechas numéricas
Se admiten fechas numéricas:
SELECT UNIX_TIMESTAMP(20201030);
Resultado:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Argumento no válido
Cuando se pasan argumentos no válidos, UNIX_TIMESTAMP()
devuelve null
con una advertencia:
SELECT UNIX_TIMESTAMP('Homer');
Resultado:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Compruebe la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Demasiados Argumentos
Llamando a UNIX_TIMESTAMP()
con demasiados argumentos da como resultado un error:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'