使用具有月和年条件的存储过程从数据库中获取记录

时间:2016-02-25 05:55:30

标签: sql sql-server tsql stored-procedures

我试图通过从date参数获取和解析年份和月份来从数据库中获取记录。以下是我的存储过程中Where子句中的代码:

(MONTH(ai.InstallmentDueDate)) = (MONTH(@DueDate)) 
AND (YEAR(ai.InstallmentDueDate)) = (YEAR(ai.InstallmentDueDate))

月份条款完美运行,但它返回该月的所有年份数据。请告诉我该怎么办。这样它就会返回该特定年份的数据。

3 个答案:

答案 0 :(得分:2)

这是你所需要的吗?

(MONTH(ai.InstallmentDueDate)) = (MONTH(@DueDate)) 
AND (YEAR(ai.InstallmentDueDate)) = (YEAR(@DueDate))

但我认为简单地传递参数而不应用任何函数可以达到你想要的效果。

ai.InstallmentDueDate = @DueDate

(在where子句中使用函数时要小心。这是性能损失)

答案 1 :(得分:1)

您没有使用年份中的参数,这就是它无法正常工作的原因。

检查您的原始帖子,您将ai.InstallmentDueDate与自身进行比较。您需要将其与传递参数的年份进行比较

(MONTH(ai.InstallmentDueDate)) = (MONTH(@DueDate)) 
AND (YEAR(ai.InstallmentDueDate)) = (YEAR(@DueDate))

答案 2 :(得分:0)

WHERE ai.InstallmentDueDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, @DueDate), 0)
AND   ai.InstallmentDueDate <  DATEADD(MONTH, DATEDIFF(MONTH, 0, @DueDate) + 1, 0)