【问题标题】:Convert Parameter Value Form DateTime To Int32将参数值从 DateTime 转换为 Int32
【发布时间】:2010-11-26 10:41:48
【问题描述】:

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

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

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

@FromDate DateTime,
@ToDate DateTime

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

“将参数值从 DateTime 转换为 Int32 失败。”

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

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

另外,在 MonthlyPromotions 表中,Month 字段是一个 Int。

谁能尽快帮助解决这个问题??

谢谢

【问题讨论】:

  • MONTH 是保留关键字,请尝试为您的表设置别名,然后引用 Month 列 (alias.Month)。
  • 或者你可以直接使用[Month]

标签: sql stored-procedures parameters


【解决方案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)

【讨论】:

  • 好吧,今天我听说有时你需要向 Prequel 祈祷,他是创造所有脚本和语法的 SQL 之神。这可能是真正的答案。
【解决方案2】:
select cast(getdate() as int)

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多