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

Cómo funciona TIMESTAMP() en MariaDB

En MariaDB, TIMESTAMP() es una función de fecha y hora integrada que devuelve un valor de fecha y hora, en función de su argumento o argumentos.

Se puede usar con uno o dos argumentos, de la siguiente manera:

  • Cuando se usa con un argumento, devuelve esa expresión de fecha o fechahora como un valor de fechahora.
  • Cuando se usa con dos argumentos, agrega el segundo argumento (hora) a la primera expresión (fecha o fechahora) y luego devuelve el valor de fechahora resultante.

Sintaxis

Se puede utilizar de las dos formas siguientes:

TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

Donde expr1 es una expresión de fecha o fecha y hora, y expr2 es una expresión de tiempo para agregar a expr1 .

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT TIMESTAMP('2030-02-01');

Resultado:

+-------------------------+
| TIMESTAMP('2030-02-01') |
+-------------------------+
| 2030-02-01 00:00:00     |
+-------------------------+

Valores de fecha y hora

Aquí hay un ejemplo de cómo pasar un valor de fecha y hora:

SELECT TIMESTAMP('2030-02-01 10:30:45');

Resultado:

+----------------------------------+
| TIMESTAMP('2030-02-01 10:30:45') |
+----------------------------------+
| 2030-02-01 10:30:45              |
+----------------------------------+

Segundo Argumento

Aquí hay un ejemplo que agrega el segundo argumento al primero:

SELECT TIMESTAMP('2030-02-01 10:30:45', '02:15:15');

Resultado:

+----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '02:15:15') |
+----------------------------------------------+
| 2030-02-01 12:46:00                          |
+----------------------------------------------+

Microsegundos

Aquí hay un ejemplo que agrega microsegundos:

SELECT TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456');

Resultado:

+-----------------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456') |
+-----------------------------------------------------+
| 2030-02-01 10:30:45.123456                          |
+-----------------------------------------------------+

Tiempos negativos

Los tiempos negativos son válidos:

Ejemplo:

SELECT TIMESTAMP('2030-02-01 10:30:45', '-09:20:00');

Resultado:

+-----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '-09:20:00') |
+-----------------------------------------------+
| 2030-02-01 01:10:45                           |
+-----------------------------------------------+

Fecha actual

Podemos pasar NOW() como argumento de fecha y hora para usar la fecha y hora actuales:

SELECT 
    NOW(),
    TIMESTAMP(NOW(), '10:30:45');

Resultado:

+---------------------+------------------------------+
| NOW()               | TIMESTAMP(NOW(), '10:30:45') |
+---------------------+------------------------------+
| 2021-05-28 09:25:09 | 2021-05-28 19:55:54          |
+---------------------+------------------------------+

Argumentos no válidos

Cuando se pasa un argumento no válido, TIMESTAMP() devuelve null con una advertencia:

SELECT TIMESTAMP('Ten Thirty AM');

Resultado:

+----------------------------+
| TIMESTAMP('Ten Thirty AM') |
+----------------------------+
| NULL                       |
+----------------------------+
1 row in set, 1 warning (0.004 sec)

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Argumento faltante

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

SELECT TIMESTAMP();

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Y otro ejemplo:

SELECT TIMESTAMP('2020-12-09', '06:30:45', '06:30:45');

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1