Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL para obter dados de qualquer mês anterior


Não sou especialista em SQL, mas tente isso:
SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1
AND DATEDIFF(yy,Requestdate, GETDATE())=0

Veja minha Demonstração do violino

Explicação:
DATEDIFF(mm,Requestdate , GETDATE())=1 (Only Request previous Month of the Current Date)

Próxima condição:
DATEDIFF(yy,Requestdate, GETDATE())=0 (Only in same year as Current Date)

No entanto, se você quiser apenas o mês anterior, independentemente de ser o mesmo ano da data atual ou não, poderá remover a segunda condição, como:
SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1

Veja a Demonstração por esta.

Por exemplo, se CurrentDate for 2013-01-19 então qualquer December 2012 pedido será incluído apesar de não ser do mesmo ano, mas é obviamente do mês anterior.