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.