Sumar o restar días a una fecha en SQL server
Para sumar o restar días a una fecha en SQL server tenemos la función DATEADD.
DATEADD permite realizar diversas operaciones a una fecha, una de ellas es poder añadir días a las fechas; sin embargo, haciendo uso de los signos también es posible restar días.
Utilizando la fecha siguiente realizaremos la suma y resta de días desde c#:
DECLARE @VFecha datetime = '2017-09-27 09:20:00';
Restar días
Aplicando el truco de los signos, es posible restar días a una fecha; agregando el signo negativo al número de días.
SELECT DATEADD(DAY,-1,@VFecha);
Resultado de la consulta:
--2017-09-26 09:20:00
Sumar días
Para la suma de días basta con agregar el total de días a restar; para esta opción no es requerido agregar el signo positivo como en la resta.
SELECT DATEADD(DAY,1,@VFecha);
Resultado de la consulta:
--2017-09-28 09:20:00
Podría interesarte Mostrar fecha con horas en c#
Una gran ventaja de esta función es que no necesitas escribir muchas líneas de códigos, por lo tanto, podrás tener un código más limpio y claro.
La suma o resta de días a las fechas respeta el total de días de cada mes, por lo que no tendrás que preocuparte si tienen 28, 30 o 31 días.
DATEADD no solo permite sumar o restar días a una fecha en SQL, también años y meses cambiando el termino DAY por YEAR o MONTH respectivamente.
En el siguiente video podrás ver la explicación del contenido del post.
Muy bien explicado, solo complementando
SELECT DATEADD(DAY,1,@VFecha);
cambiando la palabra DAY por MONTH o YEAR pueden sumar o restar los Meses o años
Gracias por tu comentario, complementaremos la información con tu observacioón.
muy buen aporte, pero si quisiera actualizar una tabla dependiendo de una consulta como seria?
El el WHERE de la consulta sumas o restas los días a la fecha.
Hola como estas? Buenisima tu explicación, muchas gracias.
Me podrias dar un ejemplo de como usarlo de filtro en Where. Para que calcule el dia la fecha de variable +1.
Saludos
Hola que tal. si no mal entiendo tu pregunta, prodra quedar algo como este:
SELECT * FROM TABLA WHERE ColFecha=DATEADD(DAY,1,@VFecha);
Saludos
Genial, gracias por el aporte, tengo una duda.
También sé que se pueden restar horas cambiando a HH, pero qué pasa si por ejemplo, tengo un registro con la fecha ‘2020-11-20 00:56:07.250’ y le quiero restar 5 horas para que me mostrara que el registro es del día anterior? o sea quiero que se vea como ‘2020-11-19 19:56:07.250’ pero si aplico el dateadd(hh,-5,CALLSTARTDT) el resultado que me da es ‘2020-11-20 05:56:07.250’
Buenas tardes, lo que quieres hacer se realiza de la siguiente manera:
declare @Hora datetime=’2020-11-20 00:15:00′;
select DATEADD(HOUR, -5, @Hora);
–Resultado: 2020-11-19 19:15:00
como se encuentra la cantidad de dias entre una fecha X comparando con la fecha actual del sistema?
Hola, en este post se explica tu pregunta.