En MariaDB, TIMESTAMPADD()
es una función de fecha y hora integrada que agrega un intervalo de expresión de enteros a una expresión de fecha o hora determinada.
Sintaxis
La sintaxis es así:
TIMESTAMPADD(unit,interval,datetime_expr)
Donde unit
es uno de los siguientes valores:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Las unidades pueden tener opcionalmente un prefijo de SQL_TSI_
.
Ejemplo
Aquí hay un ejemplo para demostrarlo:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Resultado:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Valores de fecha y hora
Aquí hay un ejemplo de cómo pasar un valor de fecha y hora:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Resultado:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Agregar un SQL_TSI_
Prefijo
La unidad puede incluir un SQL_TSI_
prefijo si es necesario:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Resultado:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Microsegundos
Aquí hay un ejemplo que agrega microsegundos:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Resultado:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Intervalos negativos
Los intervalos negativos son válidos:
Ejemplo:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Resultado:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Fecha actual
Podemos pasar NOW()
como argumento de fecha y hora para usar la fecha y hora actuales:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Resultado:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Argumento faltante
Llamando a TIMESTAMPADD()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT TIMESTAMPADD();
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 TIMESTAMPADD(10, '2020-12-09');
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 '10, '2020-12-09')' at line 1