Database
 sql >> Base de Dados >  >> RDS >> Database

Como subtrair 30 dias de uma data em T-SQL

Problema:


Você gostaria de obter a data 30 dias antes de uma determinada data em T-SQL.

Exemplo:


Nosso banco de dados tem uma tabela chamada Computer com dados nas colunas Id , Name e PurchaseDate .
Id Nome Data de compra
1 Sony GX1000 20-01-2019
2 Samsung LX2000 15-04-2019
3 Dell K80 2019-08-30

Vamos pegar o nome de cada computador e a data 30 dias antes sua data de compra.

Solução:


Usaremos a função DATEADD() para subtrair um determinado número de dias de uma data.
	SELECT Name,
		  DATEADD(day, -30, PurchaseDate)
		    AS BeforePurchaseDate;
      FROM Computer;

Segue o resultado da consulta:
Nome Antes da compra
Sony GX1000 21-12-2018
Samsung LX2000 16-03-2019
Dell K80 31-07-2019

Discussão:


Se você quiser subtrair datas ou horas no SQL Server, use o DATEADD() função. São necessários três argumentos. O primeiro argumento é a unidade de data/hora – em nosso exemplo, especificamos o dia unidade.

O próximo é a unidade de data ou hora valor . Em nosso exemplo, isso é -30 , porque estamos levando 30 dias a partir da data atual. Lembre-se de que o menos indica subtração O valor que; sem este sinal, você está adicionando à data determinada.

O último argumento é a data em que estamos operando; pode ser uma coluna de data/hora/datahora ou qualquer expressão que retorne uma data ou hora. Em nosso exemplo, usamos PurchaseDate , uma date coluna.

A função retorna uma data alterada. Em nosso exemplo, a consulta para o computador chamado 'Dell K80' retorna uma nova data em BeforePurchaseDate coluna. A data original '2019-08-30' é alterado para a data de 30 dias atrás:'2018-07-31' .

Você pode usar o DATEADD() função para todos os tipos de dados de data e hora.