我的SQL SELECT
语句出错了。基本上我想要返回交易日期在今天的日期和今天的日期减去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年的记录!
有人可以帮助我吗?
答案 0 :(得分:2)
另一个答案很接近,但如果您使用BETWEEN,如果您想今天加入,则需要在日期中添加一个
select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()+1
在getdate之间使用时,除非你在1处,否则今天不会包含它。
答案 1 :(得分:1)
只需改变你的子句
select * from loan_ledger
where trandate >= dateadd(month,-6,getdate()) AND trandate <= getdate()
问候。
答案 2 :(得分:1)
你所说的所有声明都是“当日期早于6mo之前获取信息”而不是“从6mo前到今天抓住东西”
尝试类似
的内容select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()
答案 3 :(得分:0)
你要求trandate在&lt; = 6个月前的行。当然,2007年的每个交易都符合这一标准。
如果您今天和6个月前只想要提交between,请尝试
trandate between dateadd(month, -6, getdate()) and getdate()