我有一个MySQL数据库,里面有一个名为ProductMaster的表,其中包含6个字段“Product_Id,Product_Name,Model,Opening_date,Closing_Date,Status”。 Opening_Date和Closing Date可以接受空值。因此,某些记录具有此字段的值
我有以下查询来显示此表中的记录。
"select Product_Id,Product_Name,Model from ProductMaster where Status=1"
现在我想更改查询以在Opening_Date和Closing_Date上设置过滤器 如果它们不是空的
例如:如果记录的Opening_Date为05/01/2009,截止日期为05/30/2009 然后我想检查今天是否是这两个日期之间的日期,如果是,则返回记录
如果两个字段值均为空,则返回记录
任何人都可以帮我构建查询框架吗?提前致谢
答案 0 :(得分:3)
查询的WHERE
部分(“WHERE
子句”)只是一个长布尔表达式。这是什么意思? MySQL只是希望它返回true或false,它理解为“是的。在结果中包含这一行。”或者“不。不要在结果中包含这一行。”
如果我理解正确,你想做两件事:
opening_date
和closing_date
是null
如果#1为真,你只希望#2发生。这可以表达为:
#1 AND #2
如果#1或#2为假,则将其评估为false。
可以翻译为:
(opening_date IS NOT NULL) AND (closing_date IS NOT NULL)
NOW() >= opening_date AND NOW <= closing_date
因此,如果我们将表达式中的#1和#2视为我们将要使用(#1 AND #2
)的#1和#2,那么我们得到:
((opening_date IS NOT NULL) AND (closing_date IS NOT NULL))
AND (NOW() >= opening_date AND NOW <= closing_date`)
这就是你需要的WHERE
条款。