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.

3voto

Alan Burstein Punkte 7454

Das funktioniert auch:

    SELECT DATEADD(DAY,(DATEPART(DAY,@mydate)-1)*(-1),@mydate) AS FirstOfMonth

3voto

adnan umar Punkte 99

Bitte benutzen Sie diese

  1. Für Server 2012

    DATEFROMPARTS(year('2015-06-30'),month('2015-06-30'),1)
  2. Vor Server 2012

    select  cast(cast(year('2015-06-30') as varchar(4))+'-'+ cast(month('2015-06-30') as varchar(2))+'-01' as smalldatetime)

2voto

Eli Punkte 2362

Ich habe GETDATE() als Datum verwendet, Sie können es durch das von Ihnen benötigte Datum ersetzen.
Das funktioniert folgendermaßen: Zuerst formatieren wir das Datum in JJJJMMTT... und kürzen die 6 ganz linken Zeichen ab, um nur den JJJJMM-Teil zu erhalten, und fügen dann '01' als Monat ein - und voila! Sie haben den ersten Tag des aktuellen Monats.

SELECT CAST(CONVERT(VARCHAR(6),GETDATE(),112) +'01' AS DATETIME) AS StartOfMonth

Übrigens, die Leistung ist großartig!

2voto

Brian Widdoes Punkte 33
DECLARE @startofmonth date
SET @startofmonth = DATEADD(dd,1,EOMONTH(Getdate(),-2))

Mit -2 erhalten Sie den ersten Tag des letzten Monats. getdate() ist also der 15.10.18. Ihr Ergebnis wäre der 1.9.18. Ändern Sie zu -1 und Ihre Ergebnisse wären 10/1/18. 0 wäre der Beginn des nächsten Monats, also der 1.11.2018, usw. usw.

o

DECLARE @startofmonth date
SET @startofmonth = DATEADD(dd,1,EOMONTH(@mydate,-1))

1voto

divya Punkte 11

Versuchen Sie, die folgende Abfrage auszuführen:

SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)

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