6个月滚动数据

时间:2016-09-06 08:55:29

标签: sql sql-server sql-server-2012

此查询目前正在撤回6个月的数据,因此,如果我今天运行它,我会从2016年3月1日到2016年9月6日获取数据。我想要的是数据将于2016年8月31日停止。

接下来的一个月从2016年4月1日到2016年9月30日开始,依此类推。

非常感谢

select i.Date 
from table as i
where i.Date >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,  current_timestamp)), 0)
order by i.Date desc

2 个答案:

答案 0 :(得分:3)

尝试:

select i.Date 
from table as i
where i.Date between 
  Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,  current_timestamp)), 0) 
  AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, 0)
order by i.Date desc

答案 1 :(得分:0)

假设[Date]是日期时间。 并且小时/分钟/秒不重要。

select i.[Date] 
from table as i
where convert(date,i.[Date]) between 
          dateadd(m, -6, dateadd(d, -datepart(d,GetDate())+1, convert(date,GetDate()))) AND
          dateadd(d, -datepart(d,GetDate()), convert(date,GetDate()))
order by i.[Date] desc