Ich versuche, den ersten und letzten Tag des Vormonats zu ermitteln. Was ich wirklich brauche, ist ein Bereich für eine BETWEEN
Klausel, also brauche ich die erste Sekunde des ersten Tages und die letzte Sekunde des letzten Tages.
Dies ist der Code, den ich verwendet habe:
set @startDate = DATEADD(mm, DATEDIFF(mm,0,DATEADD(mm, -1, getdate())), 0)
set @endDate = dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate() ), 0))
Für den heutigen Tag bedeutet dies jedoch, dass der 1.4.2011 und der 1.5.2011 zurückgegeben werden, was nicht ganz korrekt ist. Ich möchte die letzte Sekunde des 30.4.2011 für das endDate erhalten.
Ich habe gegoogelt und sehe viele verschiedene Möglichkeiten, den ersten und letzten Tag eines Monats zu ermitteln. Sogar auf SO selbst sehe ich viele verschiedene Varianten dieser Frage mit vielen verschiedenen Antworten. Ich würde gerne eine Liste aller Methoden zusammenstellen, um dies zu erreichen, und dann bestimmen, welche die "beste" ist (basierend auf Einfachheit und Effizienz)
(Ich sollte hinzufügen, dass ich Sql Server 2000 verwende)
EDIT :
Bezüglich des Enddate-Fehlers - dieser Code ist eigentlich korrekt, das Problem war nur, dass @endDate
war eine kleine Zeitspanne. Ich habe es in ein datetime geändert und es funktioniert jetzt richtig