Ich wähle Felder wie Client-ID, Name und Service-Datum. Ich versuche in meine WHERE-Klausel zu schreiben, dass ich jeden Tag, an dem ich meine Abfrage durchführe, einen Datumsbereich vom ersten des aktuellen Monats bis zum aktuellen Tag erfassen werde.Erfassen Sie den ersten Datumsbereich des aktuellen Monats bis zum aktuellen Tag in Where-Klausel
0
A
Antwort
2
Eine Methode wäre, den Monat zu vergleichen und das Jahr:
where year(col) = year(getdate()) and
month(col) = month(getdate()) and
day(col) <= day(getdate()) -- this is optional, if there is no future data
Eine andere Methode zum Anfang des Monats zu vergleichen wäre. Ich würde nähern dies als:
where col >= cast(dateadd(day, 1 - day(getdate), getdate()) as date)
(Dies setzt voraus, es gibt keine Zukunft Daten in der Tabelle ist.)
oder noch besser:
where col >= datefromparts(year(getdate()), month(getdate()), 1)
0
Select *
From YourTable
where SomeDateField bewteen cast(DateAdd(DD,-Day(GetDate())+1,GetDate()) as Date) and cast(getDate() as Date)
and ...
Edit: Ich verwendet die BETWEEN, um mögliche zukünftige Termine/geplante Ereignisse zu erfassen
http://stackoverflow.com/questions/1520789/how-can-i-select-the-first-day-of-a-month-in-sql Der Rest sollte einfach sein. Hinweis 'Datum zwischen DATEADD (Monat, DATEDIFF (Monat, 0, @mydate), 0) und @ mydate' –