2

我有一个 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,Closing Date 为 05/30/2009 那么我想检查今天是否是这两个日期之间的日期,如果是,则返回记录

如果两个字段值都为空,则返回记录

任何人都可以帮助我构建查询吗?提前致谢

4

1 回答 1

3

查询的WHERE一部分(“WHERE子句”)只是一个长布尔表达式。这是什么意思?MySQL 只是希望它返回 true 或 false,它理解为“是的。在结果中包含这一行。” 或“不。不要在结果中包含这一行。”

如果我理解正确,你想做两件事:

  1. 检查opening_dateandclosing_date是否null
  2. 检查今天是否在这两个日期之间。

并且您希望 #2 仅在 #1 为真时发生。这可以表示为:

#1 AND #2

如果 #1 或 #2 为假,则将其评估为假。

这可以翻译为:

  1. (opening_date IS NOT NULL) AND (closing_date IS NOT NULL)
  2. NOW() >= opening_date AND NOW <= closing_date

因此,如果我们在我们说要使用 ( #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您需要的条款。

于 2009-05-06T06:10:27.667 回答