SQL Server:计算每两周一次的日期

时间:2016-04-21 18:37:38

标签: sql-server

我无法每两周计算一次物品(周五结束)

表格如下:

+------------+------------+
| ItemNumber |    Date    |
+------------+------------+
|        235 | 2016-03-02 |
|        456 | 2016-03-04 |
|        454 | 2016-03-08 |
|        785 | 2016-03-10 |
|        123 | 2016-03-15 |
|        543 | 2016-03-18 |
|        863 | 2016-03-20 |
|        156 | 2016-03-26 |
+------------+------------+

结果:

+-------+------------+
| Total |   biWeek   |
+-------+------------+
|     4 | 2016-03-11 |
|     3 | 2016-03-25 |
|     1 | 2016-04-08 |
+-------+------------+

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题,这样的事情应该有效:

select 
  sum(1), 
  dateadd(day, ceiling(datediff(day,4, [Date]) / 14.0) * 14, 4) 
from
  yourtable
group by 
  dateadd(day, ceiling(datediff(day,4, [Date]) / 14.0) * 14, 4)

这计算了日期与“第4天”的日期差异。 5.1.1900,将其除以14(向上舍入)并乘以14得到双周,然后将其加到“第4天”。

答案 1 :(得分:0)

SELECT anyColumn, …, dateadd(week, datediff(week, 0, dateColumn) / 2 * 2 , 0) as biweekly
FROM table
WHERE condition
GROUP BY anyColumn, …, dateadd(week, datediff(week, 0, dateColumn) / 2 * 2 , 0)

这计算dateColumn距离日期0的周数,然后将该差值除以2的商乘以2,这样可以得到2周的间隔。通过将这2周间隔添加到日期0,您将获得2周的时间段。