2016-06-27 13 views
0

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

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' –

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

Verwandte Themen