2010-11-26 8 views
0

Ich habe Probleme mit einer Stored Procedure Ich schreibe.Konvertieren Parameter Wert Formular DateTime To Int32

Ich sammle Daten aus einer Reihe von Tabellen, von denen die meisten einen Datumswert halten, aber man hält nur ein Monat (int)

ich folgende Parameter am Anfang meines SP erklären.

@FromDate DateTime, 
@ToDate DateTime 

Dies funktioniert für die meisten meine Tabellen in Ordnung, aber für den Tisch, an dem ich gerade den Monat vom @FromDate ist verlangt, ich laufe in die folgenden Fehlermeldung:

"Failed to convert parameter value form a DateTime to a Int32."

Hier ist meine Select Erklärung für das Problem Table:

SELECT Branch, Discount 
    FROM MonthlyPromotions 
    WHERE (Month = DATEPART(mm,@FromDate)) 

auch in der MonthlyPromotions Tabelle das Monatsfeld ist ein Int.

Kann mir jemand so schnell wie möglich helfen ??

Thankyou

+0

MONAT ein reserviertes Schlüsselwort ist, versuchen Sie Ihren Tisch Aliasing und dann den Monat Spalte (alias.Month) verweisen. – bleeeah

+0

Oder Sie können einfach '[Monat]' statt – thomaspaulb

Antwort

1

Ihr Problem zu beheben, können Sie ein tun

PRINT CAST(CAST(DATEPART(mm, @FromDate) AS INT) AS VARCHAR(50)) 
RETURN 

Zu Beginn Ihres SP? Wenn das keinen Fehler geben, Sie können gehen Sie zu:

SELECT Branch, Discount 
    FROM MonthlyPromotions 
    WHERE Month = CAST(DATEPART(mm,@FromDate) AS INT) 
+0

Spot auf, keine Ahnung, warum es vorher nicht funktioniert hat. Prost –

+0

Nun, heute habe ich gehört, dass Sie manchmal zu Prequel beten müssen, dem Gott von SQL, der alle Skripte und Syntax erstellt hat. Das ist wahrscheinlich die richtige Antwort. – thomaspaulb

0
select cast(getdate() as int)