【发布时间】:2018-12-04 00:43:21
【问题描述】:
我有一个现有的项目,它是一份每周报告。它的参数之一是周范围。它工作得很好,但他们需要重新编写报告,而不是在一年的第一天开始一周,他们需要在第一个星期四开始一周并在星期三结束。我有这个问题
SELECT MIN([DATE]) as StartWeek
,MAX([DATE]) as EndWeek
,DATENAME(WEEK,Convert(datetime,CONVERT(VARCHAR(10),CONVERT(DATE,[DATE]),101))) as [WEEK]
FROM [somedb]
WHERE DATENAME(Year,Convert(datetime,CONVERT(VARCHAR(10),CONVERT(DATE,[DATE]),101))) = 2018
GROUP BY DATENAME(WEEK,Convert(datetime,CONVERT(VARCHAR(10),CONVERT(DATE,[DATE]),101)))
这个查询的输出是
Start Week End Week WEEK
2018-01-01 2018-01-07 1
预期的输出应该是
Start Week End Week Week
2018-1-4(since its the first thursday of the week) 2018-1-10 1
是的,我可以DATEADD,但周数仍会将 2018-1-8 确认为 WEEK 2
【问题讨论】:
-
你只想要第一周的日期吗?
-
@SalmanA 全年
-
查看修改后的答案。
标签: sql sql-server tsql datetime