为什么这个SQL查询没有返回正确的行?

时间:2015-09-28 13:48:48

标签: php mysql

我想做的事

我尝试在NULL列之前或等于当前时间的列中返回具有0TIMESTAMP值的行。

查询

SELECT * 
FROM `drafts` 
WHERE `leagueid`="vH8j5R0nlsBYhOUm" 
AND (`pick_uid`=NULL OR `pick_uid`='0')
AND `deadline` >= "2015-9-28 13:43:00";

注意:我使用deadline而不是NOW()的字符串值,因为用户有不同的时区,因此我使用PHP函数gmdate创建时间戳以确保请求是UTC。

表格截图 Table Screenshot

我期待从此查询返回的内容

所有行id<=709

2 个答案:

答案 0 :(得分:5)

可能由于=NULL一起使用,请尝试此

SELECT * 
FROM `drafts` 
WHERE `leagueid`="vH8j5R0nlsBYhOUm" 
    AND (`pick_uid` IS NULL OR `pick_uid`='0')
    AND `deadline` >= "2015-9-28 13:43";

答案 1 :(得分:2)

无法使用比较运算符测试NULL值,例如=,&lt;或&lt;&gt;。

我们将不得不使用IS NULL和IS NOT NULL运算符。