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.