sql >> Base de Datos >  >> RDS >> Database

Cómo restar 30 días de una fecha en T-SQL

Problema:

Le gustaría obtener la fecha 30 días antes de una fecha determinada en T-SQL.

Ejemplo:

Nuestra base de datos tiene una tabla llamada Computer con datos en las columnas Id , Name y PurchaseDate .

Id Nombre Fecha de compra
1 Sony GX1000 2019-01-20
2 Samsung LX2000 2019-04-15
3 Dell K80 2019-08-30

Obtengamos el nombre de cada computadora y la fecha 30 días antes su fecha de compra.

Solución:

Usaremos la función DATEADD() para restar un número determinado de días de una fecha.

	SELECT Name,
		  DATEADD(day, -30, PurchaseDate)
		    AS BeforePurchaseDate;
      FROM Computer;

Este es el resultado de la consulta:

Nombre Antes de la fecha de compra
Sony GX1000 2018-12-21
Samsung LX2000 2019-03-16
Dell K80 2019-07-31

Discusión:

Si desea restar fechas u horas en SQL Server, use DATEADD() función. Se necesitan tres argumentos. El primer argumento es la unidad de fecha/hora; en nuestro ejemplo, especificamos el día unidad.

El siguiente es el valor de la unidad de fecha u hora. . En nuestro ejemplo, esto es -30 , porque nos estamos tomando 30 días de la fecha actual. Recuerda que el menos denota restar el valor; sin este signo, está agregando a la fecha dada.

El último argumento es la fecha en la que estamos operando; podría ser una columna de fecha/hora/fechahora o cualquier expresión que devuelva una fecha u hora. En nuestro ejemplo, usamos PurchaseDate , una date columna.

La función devuelve una fecha modificada. En nuestro ejemplo, la consulta de la computadora llamada 'Dell K80' devuelve una nueva fecha en BeforePurchaseDate columna. La fecha original '2019-08-30' se cambia a la fecha de hace 30 días:'2018-07-31' .

Puedes usar el DATEADD() función para todos los tipos de datos de fecha y hora.