是否可以在SQL中执行以下操作。我想编写一个代码,它将在某些日期之间返回记录,但会在报表运行时自动更新。例如:
12月18日我想将记录从11-1回到11/18和12/1到12/18,所以我可以在报告中逐月比较这些记录。
我明白我能做到:
WHERE
[database] BETWEEN '2013-11-01' and DATEADD(Month, 1, getdate ()))
and not [database] IN ('2013-11-19 and '2013-11-30')
但是我必须每天进入查询以更新之间。我想这样做,以便我可以在任何一天运行查询并获取上个月的记录,直到本月的日期匹配。我目前一直在努力:
B.[datepaid] between DATEADD(Month, -1, getdate() )
and DATEADD(MONTH, 1, getdate() ))
但它将从11月返回所有记录。
答案 0 :(得分:0)
我会推荐against using BETWEEN with Dates,因为它会产生一些意想不到的结果。但在您的情况下,您可以使用:
WHERE ([Date] >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()) - 1, '19000101')
AND [Date] < DATEADD(MONTH, -1, GETDATE()))
OR ([Date] >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')
AND [Date] < GETDATE());
<强> Demo on SQL Fiddle 强>