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.

-1voto

Ich möchte nicht mit den großen Denkern hier konkurrieren, aber ich möchte einen einfachen Vorschlag machen, der sich leicht von der oben angenommenen Antwort unterscheidet.

select dateadd(day, -(datepart(day,@date)+1,@date)

-1voto

BornToCode Punkte 189

In Sql Server 2012,

 select getdate()-DATEPART(day, getdate())+1

 select DATEADD(Month,1,getdate())-DATEPART(day, getdate())

-1voto

Jelly Punkte 33

Ich persönlich empfohlen, dass die Sql unten, weil, wenn ich versuchen, verwenden Sie Datum-Funktion in der Bedingungsklausel, seine verlangsamen meine Abfrage Geschwindigkeit sehr viel.

Sie können es trotzdem gerne ausprobieren.

select CONCAT(DATEPART(YYYY,@mydate),'-',DATEPART(MM,@mydate),'-01')

-1voto

chimpSociety Punkte 23

Für alle, die immer noch nach einer Antwort suchen: Das funktioniert wie ein Zauber und macht alle Datumsangaben überflüssig. Der Zeitstempel ist optional, falls er angegeben werden muss, funktioniert aber auch ohne.

SELECT left(convert(varchar, getdate(),23),7)+'-01 00:00:00'

-1voto

rinku Choudhary Punkte 785

Abrufen des ersten und letzten Datums in dem Datum, das wir als Parameter in SQL übergeben

     @date DATETIME
    SELECT @date = GETDATE()
    SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@date)-1),@date),105) AS value,
    'First Day of Current Month' AS name
    UNION
    SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@date))),
    DATEADD(mm,1,@date)),105),
    'Last Day of Current Month'
    GO

      **OutPut**

12/01/2019  First Day of Current Month
12/31/2019  Last Day of Current 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