【发布时间】:2020-12-07 11:36:04
【问题描述】:
我需要根据周数、年数和月数得到一周的第一天和最后一天
我的一周从星期六开始,到星期五结束 例子: 年份:2020 周:45
正常一周:第一天:2020-10-31 ~ 最后一天:2020-11-06
我需要返回类似的东西
10月:第一天:2020-10-31~最后一天:2020-10-31
11月:2020-11-01第一天~最后一天:2020-11-06
我的查询返回一周的最后一天:
select DATEADD (WEEK, @PcpSemana, DATEADD (YEAR, ('20' + LEFT(@PcpPeriodo,2))-1900, 0)) - 5 as lastDayOfWeek
我的查询返回一周的第一天
SELECT WeekStart = DATEADD(DAY,
(CEILING(DATEPART(DAY, DATEADD (WEEK, @PcpSemana, DATEADD (YEAR, ('20' + LEFT(@PcpPeriodo,2))-1900, 0)) - 5) / 7.0) - 1) * 7,
DATEADD(MONTH, DATEDIFF(MONTH, 0,DATEADD (WEEK, @PcpSemana, DATEADD (YEAR, ('20' + LEFT(@PcpPeriodo,2))-1900, 0)) - 5), 0));
我正在使用 SET DATEFIRST 6
我不能进化太多
PcpPeriodo 包含 YYMM (2011) = 2020 / 11) PcpSemana 包含周数 (45) (01 ~ 53)
【问题讨论】:
-
为什么您的第一个示例在同一天开始和结束?如果您有奇数周编号,您可能需要创建一个日历表。