首页 > 解决方案 > 只选择开始和结束时间和日期之间的记录

问题描述

我正在做一个学校项目,我必须制作一个待办事项网络应用程序。现在我有一个小问题。我需要获取超时的记录(想想剩下的整个任务的 20%)。现在我正在寻找 php 或 sql 语句中的解决方案,用它我只能检索那些记录。

我尝试了很多陈述,但我无法让一个工作。

SELECT * FROM tasks
                    WHERE user_id='$user_id'
                    AND '$currentDate' BETWEEN start_date AND end_date

以上是使用日期而不是时间。

所以现在我需要一个语句或函数,只检索几乎完成的任务。我添加了数据库和应用程序的屏幕截图以稍微澄清一下。

我希望有人能帮助我。(这是我第一次使用stackoverflow,如果我做错了什么,很抱歉)

应用程序

数据库

标签: phpmysqlsql

解决方案


首先,您不应该使用常量、日期或其他方式来修改您的查询。所以,使用now().

其次,将日期/时间组合成一列

第三,您似乎想要and

WHERE user_id = ? AND
      NOW() >= start_datetime AND
      NOW() < end_datetime

如果要将日期/时间存储在单独的列中,则可以将它们组合起来:

WHERE user_id = ? AND
      NOW() >= ADDTIME(CAST(start_date as DATETIME), start_time) AND
      NOW() < ADDTIME(CAST(end_date as DATETIME), end_time)

推荐阅读