【问题标题】:MySQL - Trying to filter out date and time that is past current timeMySQL - 试图过滤掉过去当前时间的日期和时间
【发布时间】:2020-01-30 10:15:56
【问题描述】:

所以,我有一组从我的数据库中加载的请假请求

SELECT ID, name, email, startDate, endDate, startTime, endTime, reason, specialLeave 
FROM request 
WHERE requestStatus = 'In behandeling'

我正在尝试过滤该查询。具体来说,我想将 startDate 和 startTime 与当前时间进行比较。我希望它在开始日期是今天或更晚并且尚未达到开始时间时可见。我尝试了多种方法,例如 concat、now()、curtime()、curdate()。

我已经用以下内容过滤 startDate 了:

SELECT ID, name, email, startDate, endDate, startTime, endTime, reason, specialLeave 
FROM request 
WHERE requestStatus = 'In behandeling' AND CURDATE() <= startDate

但我不知道如何从这里开始,有什么提示吗?

【问题讨论】:

  • 我认为你需要使用betwen 例如startDate between (curdate()-1, curdate()+1)
  • 日期效果很好,我正在尝试将时间添加到等式中。
  • 您是直接运行查询还是使用ORM?最好从 php 获取 currentDateTime
  • PHP 部分似乎无关紧要,因为它不会更改查询的内容。编辑以重新关注纯 SQL
  • 无论如何,请您显示表格中的数据样本,以及过滤该数据时您希望查询的结果,以及 CREATE TABLE 语句,以便我们查看数据类型被用于每一列?谢谢。

标签: mysql sql date where-clause


【解决方案1】:

使用TIMESTAMP() 函数和startDatestartTime 作为参数返回这些列中的DATETIME 并将其与NOW() 进行比较:

TIMESTAMP(startDate, startTime) > NOW()

【讨论】:

  • 我误读了这个问题。这是正确(且简单)的解决方案。
  • 没问题,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多