请教一个关于特定某周起始日期的问题

fatxinglee 2017-07-26 05:24:18
我用的是SQL SERVER 2005
我要统计每周的业务数据,统计区间为周六到下周五,所以我把星期六设为第一天了,就是SET DATEFIRST 6,
比如说我要分析的日期段是2017-07-14~2017-07-24,我想达到的效果是这样的

周数 日期段
28 2017-07-14到2017-07-14
29 2017-07-15到2017-07-22
30 2017-07-23到2017-07-24


一直想不出有什么好办法,只能请教各位大神了
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fatxinglee 2017-07-27
  • 打赏
  • 举报
回复
引用 1 楼 ch21st 的回复:

SET DATEFIRST 6

DECLARE @StartDate DATE='2017-07-14',@EndDate DATE='2017-07-24'
SELECT DATEPART(wk, DATEADD(d,sv.number,@StartDate)) AS 周数,MIN(DATEADD(d,sv.number,@StartDate)),MAX(DATEADD(d,sv.number,@StartDate))
FROM master.dbo.spt_values AS sv 
WHERE sv.number BETWEEN 0 AND DATEDIFF(d,@StartDate,@EndDate) AND sv.type='P'
GROUP BY  DATEPART(wk, DATEADD(d,sv.number,@StartDate))
SET DATEFIRST 7



周数	(No column name)	(No column name)
28	2017-07-14	2017-07-14
29	2017-07-15	2017-07-21
30	2017-07-22	2017-07-24
十分感谢,就是这样
道素 2017-07-27
  • 打赏
  • 举报
回复

SET DATEFIRST 6

DECLARE @StartDate DATE='2017-07-14',@EndDate DATE='2017-07-24'
SELECT DATEPART(wk, DATEADD(d,sv.number,@StartDate)) AS 周数,MIN(DATEADD(d,sv.number,@StartDate)),MAX(DATEADD(d,sv.number,@StartDate))
FROM master.dbo.spt_values AS sv 
WHERE sv.number BETWEEN 0 AND DATEDIFF(d,@StartDate,@EndDate) AND sv.type='P'
GROUP BY  DATEPART(wk, DATEADD(d,sv.number,@StartDate))
SET DATEFIRST 7



周数	(No column name)	(No column name)
28	2017-07-14	2017-07-14
29	2017-07-15	2017-07-21
30	2017-07-22	2017-07-24

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧