当一周中有一个随机日期(前周五)时,获取该周的开始日期(前周一)
本文关键字:日期 周一 获取 开始 周五 一周 有一个 随机 | 更新日期: 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)