3

我的 SQLSELECT语句有问题。基本上我想返回交易日期在今天日期和今天日期减去 6 个月之间的所有记录。

到目前为止我尝试过的是:

SELECT * FROM loan_ledger
WHERE trandate <= DATEADD(month,-6,GETDATE())

但它没有得到确切的结果。结果是返回日期如 2009 年或 2007 年,但我想要的是,如果今天的日期是 2012 年 4 月 9 日,结果必须是从该日期(2012 年 4 月 9 日)到 2012 年 4 月 9 日减去 6 个月(10 月9,2011)。仅有的。

到底是结果显示了过去的交易,但仍然显示我不想要的 2009 年、2001 年的记录!

有人能帮我吗?

4

4 回答 4

2

另一个答案很接近,但如果您使用的是 BETWEEN,如果您想包括今天,您将需要在日期中添加一个

select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()+1

当在 getdate 之间使用时,它不会包括今天,除非你在 1 中。

于 2012-04-10T01:34:54.263 回答
1

只需更改您的 where 子句

select * from loan_ledger
where trandate >= dateadd(month,-6,getdate()) AND trandate <= getdate()

问候。

于 2012-04-10T01:28:28.940 回答
1

您的所有 where 声明都是“在日期早于 6 个月前获取信息”,而不是“从 6 个月前到今天获取内容”

尝试类似的东西

select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()
于 2012-04-10T01:29:28.947 回答
0

您要查询 trandate <= 6 个月前的行。毫无疑问,2007 年的每一次交易都符合这一标准。

如果您只想今天和 6 个月前之间进行转换,请尝试

trandate between dateadd(month, -6, getdate()) and getdate()  
于 2012-04-10T01:31:37.640 回答