SQL datetime小于NOW()返回无效结果

时间:2014-11-02 19:39:13

标签: mysql sql

我正在尝试运行以下SQL语句

SELECT
  P.team_id,
  P.id,
  M.id,
  P.`end`,
  UHT.user_id
FROM phase P 
INNER JOIN module M
  ON P.Module_id = M.id
JOIN user_has_team UHT
  ON UHT.team_id = P.team_id
WHERE
  M.module_type = 7 OR
  M.module_type = 8 AND
  P.end < NOW();

此结果返回180行。如果我走到这些行的底部,我得到一个看起来像这样的结果:

'52', '130', '275', '2014-12-16 00:00:00', '49'

这只是众多中的一个。

首先我想&#34;嘿,也许服务器时间无效&#34;

但是当我运行SELECT NOW()时,我得到以下结果:

'2014-11-02 19:38:49'

那么问题是什么呢?

2 个答案:

答案 0 :(得分:1)

由于SQL中的运算符优先级,您需要更多的括号。

尝试从

更改WHERE子句
WHERE M.module_type = 7 or M.module_type = 8 AND P.end < NOW();

WHERE (M.module_type = 7 or M.module_type = 8) AND P.end < NOW();

答案 1 :(得分:0)

查看运算符优先级,您的查询被解释为:

WHERE (M.module_type = 7) 
or 
((M.module_type = 8) 
AND P.end < NOW());

但你需要

WHERE (M.module_type = 7 or M.module_type = 8) AND P.end < NOW();