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.

Sumar o restar días a una fecha en SQL server

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.

10 Comments

  1. 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

  2. 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

  3. 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’

    1. 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *