Tema SQL
DATEADD() (SQL Server)
Desplaza una fecha/hora en un datepart (DATEADD(part, n, fecha)). En MySQL suele usarse DATE_ADD con INTERVAL; cuidado con tipos y zona horaria.
Descripción
DATEADD ( datepart , número , fecha ) desplaza el instante manteniendo el tipo salvo conversiones implícitas. datepart incluye DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, MILLISECOND, etc. Para restar días usa números negativos. Comportamiento en fin de mes (añadir un mes a 31 de enero) sigue reglas del motor. En MySQL suele usarse DATE_ADD(fecha, INTERVAL n DAY) o operador + con intervalos. Combina DATEADD con GETDATE()/SYSDATETIME() para ventanas relativas (últimos 7 días). Documenta zona horaria si mezclas datetime y datetimeoffset.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
DATEADD(datepart, número, fecha)
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Signo
- Número negativo retrocede en el tiempo.
- Tipos
- date, time, datetime2, datetimeoffset según columnas.
- MySQL
- DATE_ADD, DATE_SUB, o + INTERVAL n DAY.
Ejemplos
Ejemplo 1
SELECT DATEADD(DAY, 5, GETDATE()) AS dentro_de_cinco_dias;
SELECT DATEADD(MONTH, -3, SYSDATETIME()) AS hace_tres_meses;
Ejemplo 2
SELECT DATEADD(WEEK, 1, fecha_envio) AS siguiente_semana
FROM envios;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.