3

如果另一个表中的日期至少比今天早 6 个月,我想从一个表中选择一些数据。我尝试过这样的事情: 如果超过 6 个月,则从 SQL Server 中选择记录, 但我收到错误:子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
这是我的处理方式:

SELECT FCIF, [Date], [Desc]
FROM tblFCIF
WHERE tblFCIF.FCIF =
(SELECT FCIFSignOff.FCIF
FROM FCIFSignOff
WHERE ID='12'
AND (DateDiff(month,SignOffDate,GetDate()) > 0) )

因此,没有最后一行的这段代码选择了 ID 为 12 的所有内容。我只需要获取 6 个多月前的所有内容。

DATEDIFF(datepart,startdate,enddate)

当“月”在白天时,它会返回以月为单位的差异。

4

2 回答 2

16

而不是你的DateDiff线,使用:

AND (DateAdd(MM, -6, GetDate()) > SignOffDate)
于 2012-10-09T22:35:38.857 回答
0

我不知道你的架构是什么样的。但是,我将继续猜测您需要IN操作员,而不是=操作员。

SELECT FCIF, [Date], [Desc]
FROM tblFCIF
WHERE tblFCIF.FCIF IN
(SELECT FCIFSignOff.FCIF
FROM FCIFSignOff
WHERE ID='12'
AND (DateDiff(month,SignOffDate,GetDate()) > 0) )
于 2012-10-09T22:36:52.943 回答