sql >> Database teknologi >  >> RDS >> Sqlserver

SQL til indhentning af data enhver tidligere måned

Jeg er ingen SQL-ekspert, men prøv dette:

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

Se min Fiddle Demo

Forklaring:

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

Næste betingelse:

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

Men hvis du kun vil have den foregående måned, uanset om det er det samme år som den aktuelle dato eller ej, kan du fjerne den anden betingelse, f.eks.:

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

Se demoen for dette.

For eksempel hvis CurrentDate er 2013-01-19 derefter enhver December 2012 anmodning vil blive inkluderet på trods af, at den ikke er fra samme år, men naturligvis er fra forrige måned.



  1. Hvordan resultaterne bliver blandet mellem to tabeller, når du bruger UNION

  2. Hent, hvor lang tid det tager at etablere en forbindelse med PHP mysqli_real_connect()

  3. Hvordan kan jeg bruge DATE() i Doctrine 2 DQL?

  4. MySQL Antal dage inden for et DateRange, inden for en måned (Booking Table)