例如,我一周的开始日是星期一(2011年1月1日),当用户输入是星期三(4/1/2011)时,是否有任何内置函数可以帮助我获取开始日期本周?
谢谢。
答案 0 :(得分:1)
假设SQL服务器的DATEFIRST
设置适合您对周数如何对齐的想法(这可能只适用于周六,周日等),那么来自任意星期一的DATEADD / DATEDIFF对应该给出结果你想要的:
select DATEADD(week,DATEDIFF(week,'20110103',CURRENT_TIMESTAMP),'20110103')
CURRENT_TIMESTAMP
显然选择了今天的日期。如果您从表格Tab
)中选择了一个名为RandomDate
的列,那么您可能会这样做:
select DATEADD(week,DATEDIFF(week,'20110103',RandomDate),'20110103') as MondayDate
from Tab
但我对你的例子感到困惑,因为1月2日和2月1日('2/1/2011'的通常解释可能性)都不是星期一。我选择的随机星期一是'20110103'
- 因此,如果您需要查找特定日期的星期五,则在'20110107'
出现的两个地方使用'20110103'
答案 1 :(得分:1)
没有内置功能,
但你可以使用:
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
答案 2 :(得分:1)
select getdate() - CAST(getdate()-.5 as int)%7
或
select cast(getdate() - CAST(getdate()-.5 as int)%7 as date)