【发布时间】:2018-12-06 06:35:37
【问题描述】:
我正在使用 SQL Server 2008R2,我正在尝试按周划分给定的月份范围。我得到了以下解决方案。但是,我想要(周一至周五)而不是(周日至周六)之间的日子。我该怎么做?
DECLARE @start_date DATETIME, @end_date DATETIME
DECLARE @Table table(StartDate datetime,Enddate datetime,WeekNo int)
SET @start_date = '1 Dec 2018'
SET @end_date = '31 Dec 2018'
INSERT @Table
SELECT MIN(dt), MAX(dt), w
FROM
(
SELECT dt, year(dt) y, DATEPART(week,dt) w
FROM
(
SELECT @start_date + (ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1) dt
FROM sys.columns s1 cross join sys.columns s2
) q
WHERE dt BETWEEN @start_date AND @end_date
) a
group by y,w
Select * from @Table order by startdate, weekno
【问题讨论】:
-
如果 2018 年 12 月 1 日不是星期一,那么您想要最接近 start_date 的星期一?如果 12 月 31 日不是星期五,你想在最后一个星期五直到 2018 年 12 月 31 日
-
@george-joseph 如果可以的话,那就太好了。否则,常规的一周范围对我来说也可以。 (即 2018 年 12 月 31 日至 2019 年 1 月 4 日)在本月底的情况下
-
查询中的 weekno 将根据 iso 周定义本身来计算,不是吗?
-
@GeorgeJoseph 是的。如何在本月底的情况下获得常规周范围(即 2018 年 12 月 31 日至 2019 年 1 月 4 日)
标签: sql sql-server-2008-r2 monthcalendar