获取该周的当前日期(星期五)当前日期的一周的开始日期(星期一)

时间:2011-08-16 08:18:12

标签: c# .net sql-server tsql ado.net

例如,我一周的开始日是星期一(2011年1月1日),当用户输入是星期三(4/1/2011)时,是否有任何内置函数可以帮助我获取开始日期本周?

谢谢。

3 个答案:

答案 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)