【问题标题】:SQL Query for an entry where current date is inside start/end datesSQL 查询当前日期在开始/结束日期内的条目
【发布时间】:2011-01-12 17:34:47
【问题描述】:

使用 MySQL

我需要比较当前日期的两个字段是:startDate、endDate

我需要这样的查询:

SELECT * FROM `{$this->_sPrefix}` 
WHERE `profileID` = '{$iProfileId}' 
AND CUR_DATE() 
BETWEEN `startDate` AND `endDate` 
ORDER BY `added` DESC";

这是我的新查询,但我不知道如何同时进行这两项检查:profileID 和日期。

【问题讨论】:

  • 请不要编辑您的问题来更改它。相反,要求您跟进以回应答案。我在下面编辑了我的答案,以回应您的新问题。

标签: php sql mysql


【解决方案1】:

你应该可以这样做,但你必须使用 BETWEEN:

 WHERE CUR_DATE() BETWEEN `startDate` AND `endDate`

您使用的是什么 SQL 数据库?

编辑(针对已编辑的问题,请不要一直更改问题!):

假设 profileID、startDate 和 endDate 都是同一个表中的所有列,您的查询看起来是正确的。

另外,如果这是一个面向 Web 的应用程序,请考虑避免这种动态 SQL 生成,因为它会使您的应用程序容易受到 SQL 注入攻击。

【讨论】:

    【解决方案2】:
    ... WHERE CUR_DATE() BETWEEN `startDate` AND `endDate` ORDER ...
    

    【讨论】:

      【解决方案3】:
      ...WHERE `startDate` <= CUR_DATE() and `endDate` >= CUR_DATE()
      

      【讨论】:

      • 为什么这被否决了?这是对问题的有效答案,不是吗?仅仅因为它看起来不像其他答案并不意味着它不正确。
      • @Larry Lustig:我也在想同样的事情。我开始想,也许我把小于和大于颠倒了。
      • 我没有投反对票,但它的效率略低,因为 CUR_DATE() 被评估了两次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2020-11-16
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多