php - 选择某个日期范围内活跃的项目

标签 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";

最佳答案

如果您的列类型是日期时间日期。 您的查询应该是:

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/

相关文章:

javascript - Php 值在外部 jquery 脚本中不起作用

javascript - ajax表单已提交但没有响应

php - 语法错误: Unexpected token < in JSON at position 0 json_encode

sql - 我们可以用单个 sql 语句插入两个表吗?

mysql FUNCTION 存储。ST_Intersects 不存在

php - PHP/MySQL 中的数据库连接问题

php - 无法使用 Mercury XAMPP 发送邮件

Mysql,当key匹配时,合并结果集中特定字段的内容

mysql - 如何处理 mySQL 查询中的特殊字符/html 代码?

mysql - MySQL分组索引和单一索引有什么区别