当一周中有一个随机日期(前周五)时,获取该周的开始日期(前周一)

本文关键字:日期 周一 获取 开始 周五 一周 有一个 随机 | 更新日期: 2023-09-27 18:05:57

例如,我一周的开始日期是星期一(2011年1月2日(,当用户输入是(2011年4月1日(星期三时,是否有任何内置功能可以帮助我获取当前一周的起始日期?

谢谢。

当一周中有一个随机日期(前周五)时,获取该周的开始日期(前周一)

假设SQL server的DATEFIRST设置符合您对周的排列方式(这可能只对周六、周日等很重要(,那么任意周一的DATEADD/DATEDIFF对应该会给出您想要的结果:

select DATEADD(week,DATEDIFF(week,'20110103',CURRENT_TIMESTAMP),'20110103')

CURRENT_TIMESTAMP显然选择了今天的日期。如果您从一个名为RandomDate的表(Tab(中进行选择,那么您可以执行以下操作:

select DATEADD(week,DATEDIFF(week,'20110103',RandomDate),'20110103') as MondayDate
from Tab

但我对你的例子感到困惑,因为1月2日和2月1日(通常解释为"2011年2月1号"(都不是星期一。我随机选择的星期一是'20110103',所以如果你需要找到特定日期的星期五,你会在'20110103'出现的两个地方都使用'20110107'

没有内置的功能

但你可以使用:

SELECT      DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
select getdate() - CAST(getdate()-.5 as int)%7

select cast(getdate() - CAST(getdate()-.5 as int)%7 as date)