Ich habe eine Tabelle mit Spalten ReportJahr und ReportMonat. Für reportyear ist die Spalte ein vharchar (4), das dem Jahr 2016-Format entspricht. Für reportmonth ist es ein varchar (2), das ein 01, 02, 03 usw. Format hat. Ich habe einen Datenparameter, der die beiden verkettet, da unsere Endbenutzer ein Dropdown-Datum wünschen. Also mein Parameter ist @ReportDate varchar (7).Monat von VARCHAR Jahr und Datum abziehen Parameterformat '2016-11'
Mein Problem ist für eine meiner Auswahlen in meiner gespeicherten Prozedur, ich muss eine WHERE-Klausel setzen, wo es einen Monat zurückgeht. Wenn also mein Parameter gleich '2016-11' ist, möchte ich eine where-Klausel, die '2016-10' zurückgibt. Ich habe erfolgreich diese mit der fließenden Abfrage getan:
SUBSTRING(@Reportdate, 1, 4) + '-' + cast(substring(@ReportDate, 6, 7) -1 as varchar(20))
Das gibt ‚2016-10‘, wenn ich ‚2016-11‘ wie jeden Bericht Datum Parameter wählen. Aber nach weiterem Nachdenken würde dies nicht funktionieren, wenn mein Berichtdatum im Januar ist, weil die obige Abfrage nur einen String-Wert subtrahiert. Wenn ich '2016-01' auswähle, würde die obige Abfrage '2016-0' zurückgeben.
Endbenutzer möchten die Dropdown-Parameter in SSRS mit Bindestrichen sein, deshalb habe ich es als varchar (7) deklariert, um das Bindestrich @John Cappelletti – Lisbon
@Lisbon ich aktualisiert, um den Bindestrich enthalten, wenn ich den Kommentar sah. Der varchar (7) vs varchar (10) ist kein Problem –