我的服务器被配置为周日是第0天,周一是第1天。为了找到任何给定日期的第一个星期一,我写了这样的文章:
SELECT DATEADD(DAY,
- ((DATEPART(WEEKDAY, DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, [DATE])))) %7) - 1),
DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, [DATE]))))
这是否按预期工作?此外,还有更好或更标准的方法吗?我发现非常令人惊讶的是,有一个EOMONTH
函数,但一个月初什么都没有。
Select dateadd(day, (7 - datediff(day, -53690, mm.FirstOfMonth) % 7) % 7, mm.FirstOfMonth)
From (Values (dateadd(month, datediff(month, 1, getdate()), 0))) As mm(FirstOfMonth)