2017-11-16 1 views
0

Ich habe eine Anforderung, wo ich den Schlussstand des Vormonats auf der Grundlage von Monat und Jahr finden müssen.Wie finden Sie den letzten Tag des vorherigen Monats auf der Grundlage von Monat und Jahr in SQL Server

Ich habe diesen Code versucht:

DECLARE @month NUMERIC = 11 
DECLARE @Year NUMERIC = 2017 

SELECT 
    DATEADD(DAY, -1, DATEADD(MONTH, @Month, DATEADD(YEAR, @Year - 1900, 0))) 

aber dies ist der Wert des letzten Tag des laufenden Monats '2017-11-30 00:00:00.000' zurück.

Statt dessen möchte ich den letzten Tag des Vormonats: '2017-10-31 00:00:00.000'

Antwort

1

Sie werden direkt fügen Sie einfach -1 auf Ihre Variable @Month für letzten Monat Datum:

SELECT Dateadd(day, -1, Dateadd(month, @Month-1, 
             Dateadd(year, @Year - 1900, 0) 
              )) 

Ergebnis:

2017-10-31 00:00:00.000 
+0

seine Arbeits verwenden ............. – Gans

0

oder Sie können ein bisschen vereinfachen, indem Sie nur 2 DATEADD()

verwenden 0
SELECT DATEADD(month, @Month - 1, DATEADD(year, @Year - 1900, -1)) 

oder die @year bis Monate konvertieren und nur einzelne DATEADD()

SELECT DATEADD(month, (@Year - 1900) * 12 + @Month - 1, - 1) 
Verwandte Themen