PHP Mysqli Equal运算符不工作

时间:2016-07-01 13:18:03

标签: mysql

我正在使用准备好的声明,但仅针对此问题,请参阅以下示例:

'SELECT agentname,agentjoindate FROM agentdatabase WHERE joindate = (NOW() - INTERVAL 11 DAY)'

如果joindate恰好是11天前,请选择名称和加入日期。当应该至少为1时,我似乎无法获得上述查询的任何结果。如果我使用大于或小于它的工作但不使用等于时。 joindate是Mysql数据库中的日期类型列。日期类型字段是否可以等于(NOW() - INTERVAL 11 DAY),因为它似乎大于或小于唯一有效的运算符?

4 个答案:

答案 0 :(得分:1)

如果没有看到这些值,我会假设您的日期遵循格式yyyy-mm-dd

但是,NOW() - INTERVAL 11 DAY的格式为yyyy-mm-dd H:m:s;它也会有时间。

因此,即使您的约会也有时间,您仍然不希望仅在确切的日期时间匹配。

您可以通过从最后一个值获取日期来轻松解决此问题:

... WHERE joindate = DATE(NOW() - INTERVAL 11 DAY)

答案 1 :(得分:0)

使用DATE_SUB功能正确减去日期:

SELECT agentname,agentjoindate FROM agentdatabase WHERE joindate = DATE_SUB(CURDATE(), INTERVAL 11 DAY)

我将NOW()更改为CURDATE(),因为第一个返回DATETIME,第二个返回日期。如果joindate是日期时间,则使用DATE(joindate)将其投放为日期,否则它也会尝试匹配确切的时间。

答案 2 :(得分:0)

" NOW() - INTERVAL 11 DAY"将以日期时间格式返回日期: 2016-06-20 16:22:26

如果" joindate"不是那种格式,而是以日期格式,它不匹配任何东西。然后你应该使用: " CURDATE() - INTERVAL 11 DAY"

干杯

答案 3 :(得分:0)

您可以在询问以下链接之前询问问题。

How to subtract 30 days from the current datetime in mysql?

并且回答是

SELECT agentname,agentjoindate FROM agentdatabase WHERE joindate BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY)AND NOW();