2017-08-18 1 views
0

i ersten Tag und letzten Tag des Vormonats als Datum Parameter in meiner gespeicherten Prozedur zu übergeben bin versucht, aber es ist wie unten Datenkonvertierungsfehler zu werfen:Dynamische Datumsparameter in gespeicherte Prozedur

Fehler bei der Konvertierung, wenn Datum Umwandlung und/oder Zeit von Zeichenkette.

Hier ist ein Beispiel, wie ich den Parameter übergeben habe;

EXEC DBO.usp_PRODUCTS 'DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)' 
          ,'DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)' 

Der Datentyp für Startdatum und Enddatum in meinem gespeicherten proc ist Datum, auch wenn ich zu varchar ändern, es Ähnliche Fehlern ist zeigt.

Gibt es eine Möglichkeit, den ersten Tag und den letzten Tag des vorherigen Monats als Parameter in meinem gespeicherten Proc übergeben?

Antwort

0

Versuchen Sie, diese

Declare @startDate Date = DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)); 
Declare @endDate Date =DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)); 

EXEC DBO.usp_PRODUCTS @startDate , @endDate ; 
0

Wenn Sie SQLServer 2012 oder höher verwenden, können Sie die EOMonth Funktion den letzten Tag des Monats mit einem Offset von -1 für den Vormonat zurück:

EXEC DBO.usp_PRODUCTS 
    DateAdd(day,1,EOMonth(GetDate(),-2)), 
    EOMonth(GetDate(),-1) 
+0

Danke, aber es zeigt Syntaxfehler – axlrose89

Verwandte Themen