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.

8voto

Luc Punkte 61

Dies kann eine neue Funktion sein, aber Sie können auch alte Funktionen verwenden:

select DATEFROMPARTS(year(@mydate),month(@mydate),'01')

Wenn das Datum in der Variablen zum Beispiel lautet '2017-10-29' würde es ein Datum von '2017-10-01'

https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15

7voto

PoloSoares Punkte 197
SELECT @myDate - DAY(@myDate) + 1

6voto

dariuszewski Punkte 31

Wenn Sie sich für SQL Server 2012+ entscheiden möchten, können Sie die von mir verwendete Lösung ausprobieren:

SELECT DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, GETDATE())))

5voto

dove Punkte 20015

Es ist wahrscheinlich ziemlich schnell. Warum nicht als Sql-Funktion erstellen.

CREATE FUNCTION [dbo].[GetFirstDayOfMonth] ( @InputDate    DATETIME )
RETURNS DATETIME
BEGIN

    RETURN CAST(CAST(YEAR(@InputDate) AS VARCHAR(4)) + '/' + 
                CAST(MONTH(@InputDate) AS VARCHAR(2)) + '/01' AS DATETIME)

END
GO

4voto

Erster und letzter Tag des laufenden Monats:

select dateadd(mm, -1,dateadd(dd, +1, eomonth(getdate()))) as FirstDay, 
eomonth(getdate()) as LastDay

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