我知道这个问题已经非常多余了,但在我的情况下,我无法弄清楚我的代码出了什么问题,或者我的表中的数据可能出错了。
我正在运行MS SQL 2005:
Select *
from table
where [Scheduled Date] between '2013-07-01' and getdate()
Order by [Scheduled Date] asc
我做的两件事在我运行时结果很好:
getdate()
更改为'2013-09-01'
之类的内容,但我不认为问题出在getdate()
函数中。我总是得到:
子查询返回的值超过1。这是不允许的 子查询跟随=,!=,<,< =,>,> =或当子查询用作 表达。
col_1
(成功),添加col_2
(成功),添加到col_9
(成功),但当我尝试添加col_10
时失败。我总共有13列。的sp_help
答案 0 :(得分:2)
您在查询中使用了一个视图。
视图中的但是当我尝试添加col_10时,它失败了。
col_10
是一个返回多行的子查询。
答案 1 :(得分:-1)
我认为您的上述查询是某些主要查询的一部分。
同样在'2013-07-01'和getdate()之间 - 只返回行,因此您无法识别错误。
<2013>在“2013-07-01”和“2013-09-01”之间 - 这会返回许多暴露您的SQL的行。所以你的查询错了。
答案 2 :(得分:-1)
那是因为where子句中的任何内容都必须是逻辑表达式。 Getdate()不是逻辑表达式。试试这个......
Select * from table
where [Scheduled Date] >= '2013-07-01' and [Scheduled Date] <= getdate()
Order by [Scheduled Date] asc