Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL за получаване на данни за всеки предходен месец

Не съм експерт по SQL, но опитайте това:

SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1
AND DATEDIFF(yy,Requestdate, GETDATE())=0

Вижте моята демонстрация на Fiddle

Обяснение:

DATEDIFF(mm,Requestdate , GETDATE())=1 (Only Request previous Month of the Current Date)

Следващото условие:

DATEDIFF(yy,Requestdate, GETDATE())=0 (Only in same year as Current Date)

Ако обаче искате само предходния месец, независимо дали е същата година като текущата дата или не, можете да премахнете второто условие, като:

SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1

Вижте Демо за това.

Например, ако CurrentDate е 2013-01-19 след това всеки December 2012 заявката ще бъде включена, въпреки че не е от същата година, а очевидно е от предишния месец.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахна излишното пространство от имена във вложена заявка, когато използвам FOR XML PATH

  2. Разрешението SELECT беше отказано на обекта „Адрес“, база данни „CNET_85731“, схема „dbo“

  3. Използване на клауза OUTPUT за вмъкване на стойност извън INSERTED

  4. Защо получавам тези различни резултати от две SQL заявки?

  5. Как да получите OBJECT_NAME() от различна база данни в SQL Server