选择在日期范围内处于活动状态的项目

时间:2018-07-12 14:31:48

标签: php mysql

我正在构建一个PHP项目工具,并且试图弄清楚如何在特定日期范围内选择(或排除)项目。每个项目在mysql表中都有一个“ start_date”和“ end_date”,但是BETWEEN似乎仅查看值本身,而不是我的书面值之间出现的日期。

例如,如果我尝试选择在7月16日至7月20日之间处于活动状态的项目,那么如何确保返回表中具有7月1日至7月20日开始和结束日期的行?

以下是无效的代码示例:

$sql = "SELECT *
FROM 
    projects
WHERE
    proj_start_date BETWEEN '2018-07-16' AND '2018-07-20'
AND
    proj_end_date BETWEEN '2018-07-16' AND '2018-07-20'
GROUP BY
    proj_start_date";

能够的麻烦在于它无法抓住范围开始之前和之后结束的东西。

知道了!下面的正确答案使我步入正轨。这是达到目的的代码:

$sql = "
SELECT *
FROM 
    projects
WHERE
    proj_start_date <= '2018-07-20'
AND
    proj_end_date >= '2018-07-16'
GROUP BY
    proj_start_date";

1 个答案:

答案 0 :(得分:2)

如果您的列类型是datetimedate。 您的查询应为:

SELECT * FROM `tablename` WHERE start_date >= '2018-07-01' AND end_date <= '2018-07-20' 

或之间:

SELECT * FROM `tablename` WHERE start_date BETWEEN '2018-07-01' AND '2018-07-20'