2016-02-25 56 views
1

我試圖通過從日期參數獲取和分析年份和月份來從數據庫獲取記錄。這裏是Where子句中的代碼在我的存儲過程:使用帶有月份和年份條件的存儲過程從數據庫獲取記錄

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

月份條款完美的作品,但它返回該月的所有年份的數據。請告訴我應該怎麼做。以便它返回該特定年份的數據。

回答

2

這是你要求的嗎?

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

但我認爲僅僅傳遞參數而不應用任何函數就可以實現你想要的。

ai.InstallmentDueDate = @DueDate 

+0

感謝@bmsqldev – saif

+0

歡迎您:) – bmsqldev

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

您沒有使用該參數在當年(當您使用在where子句中,這是一個性能命中功能要小心),這就是爲什麼它不工作。

檢查您的原始帖子,您正在比較ai.InstallmentDueDate本身。你需要把它比對傳遞的參數的一年

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