如何从超过6个月的sql中选择数据?

时间:2012-10-09 22:33:15

标签: sql datediff

如果来自另一个表的日期至少比今天早6个月,我想从一个表中选择一些数据。 我尝试过这样的事情: Select records from SQL Server if greater than 6 months 但我收到错误:子查询返回的值超过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)

当'月'在白天时,它会返回月份差异。

2 个答案:

答案 0 :(得分:15)

使用:

代替您的DateDiff
AND (DateAdd(MM, -6, GetDate()) > SignOffDate)

答案 1 :(得分: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) )