415 Stimmen

Wie kann ich den ersten Tag eines Monats in SQL auswählen?

Ich muss nur den ersten Tag des Monats einer bestimmten DateTime-Variablen auswählen.

Ich weiß, dass dies mit dieser Art von Code recht einfach zu bewerkstelligen ist:

select CAST(CAST(YEAR(@mydate) AS VARCHAR(4)) 
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)

Aber leider ist das nicht sehr elegant und auch nicht sehr schnell.

Gibt es eine bessere Möglichkeit, dies zu tun? Ich verwende SQL Server 2008.

746voto

LukeH Punkte 251752
SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth

205voto

Jithin Shaji Punkte 5453

Zusätzlich zu all den oben genannten Antworten gibt es einen Weg, der auf einer Funktion basiert, die in sql 2012

SELECT DATEFROMPARTS(YEAR(@mydate),MONTH(@mydate),1)

139voto

Marcos Krucken Punkte 1081

Beginnend mit SQL Server 2012:

SELECT DATEADD(DAY,1,EOMONTH(@mydate,-1))

16voto

Abhishek Gupta Punkte 525

Einfache Abfrage:

SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) 
-- Instead of GetDate you can put any date.

15voto

Mayo Punkte 10176

Die Umwandlung eines Strings (z.B. "5/1/2009") in datetime ist sicherlich besser lesbar, aber wir haben vor einiger Zeit Code gefunden, der den Ersten des Monats zurückgibt...

DECLARE @Date DATETIME
//...
SELECT DATEADD(mm, DATEDIFF(mm,0,@Date), 0)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X