2016-07-14 3 views
0

Okay, also habe ich eine SQL-Abfrage, die ich wöchentlich ausführen, die jetzt auf einer monatlichen Basis ausgeführt werden muss. In der Abfrage habe ich ein Startdatum und ein Enddatum für den Zeitraum, den der Bericht ziehen sollte. Was ich jetzt machen möchte, ist eine Formel für das Start- und Enddatum.Unique Start und End Datum des Inkrafttretens Szenario

Das Startdatum Ich möchte der letzte Monat vom heutigen Datum und dann der letzte Montag des vorherigen Monats sein.

Das Ende des Gültigkeitsdatums Ich möchte das maximale Änderungsdatum aus meiner Produktdetaildatei sein.

Ich weiß, was ich suche, aber ich bin unsicher, wie man das in Code schreibt? Vielen Dank!!!

Antwort

1

versuchen diese

declare @dt datetime 
set @dt=GETDATE() 
select DATEADD(WEEK,DATEDIFF(WEEK,0,DATEADD(DAY,DATEPART(DAY,dateadd(m,-1,GETDATE())),dateadd(m,-1,GETDATE()))), 0) StartDate 
+0

Hm ... für mich das falsche Ergebnis produziert ... eine Woche vor dem letzten Montag ... – Tyron78

+0

Sie wollen Startdatum als Vormonat ersten Montag, bin ich richtig? –

+0

Die Beschreibung sagt letzten .... – Tyron78

1

Diese den Trick tun sollten:

DECLARE @Today date = convert(date, getdate()); 
DECLARE @Monday tinyint = 1; 
DECLARE @LastDayOfMonth date = DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0)); 
DECLARE @LastWeekDayOfMonth int = datepart(weekday,DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0))); 

SELECT DATEADD(d, @[email protected]+1, @LastDayOfMonth) AS LastMonday 
+0

Sie wissen, dass dies von der DATEFIRST-Einstellung abhängt? – dean

+0

Deshalb habe ich die Variable @monday definiert ... aber daran gedacht, du hast Recht ... könnte eine modifizierte/zusätzliche Berechnung benötigen ... aber nur für den Fall, dass Montag der erste Tag der Woche ist, sollte dies funktionieren. ;-) – Tyron78

+0

Welche unf hilft nicht, weil es die DATEPART-Funktion, die betroffen ist: https://msdn.microsoft.com/en-us/library/ms174420.aspx – dean

Verwandte Themen