ISNULL日期月份

Ane*_*lim 0 asp.net datetime isnull

我有两个下拉列表,一个是月份,另一个是年份.用户为他们想要检索的项目选择提交月份和年份.在数据库中,日期输入完整,例如.01/12/2009.下拉列表中有"All years"和"All months"选项,但是当用户选择其中任何一个时,它们都会得到null结果.非常感谢.这是我的查询:

SELECT ItemID, YEAR(Submit) AS SubmitYear, MONTH(Submit) AS SubmitMonth 
FROM Items 
WHERE (YEAR(Submit) LIKE ISNULL(@YearPay, ''))
 AND (MONTH(Submit) LIKE ISNULL(@MonthPay, ''))
Run Code Online (Sandbox Code Playgroud)

我的参数是:

<asp:ControlParameter ControlID="DropDownList1" DefaultValue="" Name="YearPay" PropertyName="SelectedValue" />

<asp:ControlParameter ControlID="DropDownList2" DefaultValue="" Name="MonthPay" PropertyName="SelectedValue" />

Mar*_*tta 5

这是解决问题的一种方法:

 SELECT ItemID, YEAR(Submit) AS SubmitYear, MONTH(Submit) AS SubmitMonth 
 FROM Items 
 WHERE (YEAR(Submit) = @YearPay OR @YearPay IS NULL)
 AND (MONTH(Submit) = @MonthPay OR @MonthPay IS NULL)
Run Code Online (Sandbox Code Playgroud)

这样,如果为任一变量传递NULL,则WHERE子句的该部分将返回true.