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

Cómo funciona UNIX_TIMESTAMP() en MariaDB

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'