我试图通过从date参数获取和解析年份和月份来从数据库中获取记录。以下是我的存储过程中Where
子句中的代码:
(MONTH(ai.InstallmentDueDate)) = (MONTH(@DueDate))
AND (YEAR(ai.InstallmentDueDate)) = (YEAR(ai.InstallmentDueDate))
月份条款完美运行,但它返回该月的所有年份数据。请告诉我该怎么办。这样它就会返回该特定年份的数据。
答案 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)