我正在构建一个 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";
最佳答案
如果您的列类型是日期时间
或日期
。
您的查询应该是:
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'
关于php - 选择某个日期范围内活跃的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308308/