2011-06-10 66 views
4

这个SQL有什么问题?
它似乎应该工作,但它不。这个查询为什么不选择任何行

utc_time是日期时间字段。

SELECT id 
FROM `foo` 
WHERE utc_time > now() 
AND utc_time <= DATE_ADD(curdate(),INTERVAL 24 day); 

解释说Where子句是不可能的。

utc_time是类型的日期时间。以下是一个示例utc_time值:2011-06-21 00:45:00

+6

MySQL告诉你什么?没有错误,我会继续前进,并责备gremlins或撒旦什么的。 – 2011-06-10 21:51:19

+2

请为您提供utc_time和now()的示例值,您认为它应该被选中,但它不是。 – 2011-06-10 21:51:54

+1

是utc_time在你的查询中的一列,或者你在调用函数'utc_time()'是这样的,它不是ruby,你需要'()'。如果它的列的名称,我敢打赌你有它设置为日期时间... – colinross 2011-06-10 21:53:21

回答

2

utc_time()是一个built-in function。即使没有括号,utc_time仍然会返回当前UTC时间。

转义名为utc_time的列。这工作(我测试):

SELECT id 
FROM `foo` 
WHERE `utc_time` > now() 
AND `utc_time` <= DATE_ADD(curdate(),INTERVAL 24 day); 

然而,为什么这是一个坏主意,使用保留字或函数名作为列/表名的另一个例子。

+0

你懂了!非常感谢。那让我疯狂。有时间更改该列名称。 :-) – sqlman 2011-06-10 22:37:41