将参数值从DateTime转换为Int32

时间:2010-11-26 10:41:48

标签: sql stored-procedures parameters

我在编写存储过程时遇到问题。

我正在从多个表中收集数据,其中大多数表都有一个日期值,但一个表只持有一个月(int)

我在SP的开头声明了以下参数。

@FromDate DateTime,
@ToDate DateTime

这适用于我的大多数表格,但对于我只需要@FromDate月份的表格,我遇到以下错误:

  

“无法将参数值从DateTime转换为Int32。”

这是我的问题表的Select语句:

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

此外,在MonthlyPromotions表中,Month Field是Int。

任何人都可以帮忙解决这个问题吗?

三江源

2 个答案:

答案 0 :(得分:1)

要解决您的问题,可以做一个

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

在SP的开头? 如果没有出错,您可以继续:

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

答案 1 :(得分:0)

select cast(getdate() as int)