2009-08-06 19 views

回答

12

参考表达,而不是别名。

SELECT ID, datediff("mi", Start, [End]) as Total 
FROM TimeTable 
WHERE datediff("mi", Start, [End]) is not null 

编辑,更新,以避免语法错误END

+1

and wrap End in [] – Sk93 2009-08-06 16:16:09

+0

大声笑,这正是我的解析器刚刚说的。 – cmsjr 2009-08-06 16:17:46

+1

在where子句之前,逻辑地处理select子句。在处理select子句之前,别名不可用。 (几乎?)除ORDER BY之外的所有子句都在select子句之前处理。按顺序可以使用别名,因为它是在select子句之后处理的。 – 2009-08-06 19:58:50

1

的使用不要使用像“结束”保留字作为表或者列名!使用类似TaskStart/TaskEnd或JobStart/JobEnd或StartDate/EndDate的东西,每次你不必回头在你的表格/列名称周围添加[]时,都会感谢我......

+0

这仅仅是一个例子的名称.. – agnieszka 2009-08-06 16:42:24

+1

不是一个真正的答案。作为评论会更好。 – Nick 2013-01-09 10:07:24

+0

@尼克,感谢您的反对!通过遵循我的回答'不要使用像“End”这样的保留字作为表或列名称,OP的错误“Invalid column name”将被解决。几乎没有投票权,我的答案在技术上是错误的?请参阅:http://stackoverflow.com/privileges/vote-down – 2013-01-09 13:25:11