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'