在SQL中使用今日日期获取周日期(mon-sun)

时间:2010-12-05 01:49:01

标签: sql tsql

我被困住了,之前我没有做过这样的事情。通过提供今天的日期,例如2010-12-04,我应该得到以下内容:

startdate = 2010-11-29
enddate = 2010-12-05

基本上我需要过滤我的查询,以便为我提供这个'周'的数据

任何关于如何开始这个的想法都会很棒!

谢谢,

塔伦

2 个答案:

答案 0 :(得分:2)

更新:此功能归Graham at SqlTeam所有。它返回任何给定日期的星期一日期;它应该处理任何DATEFIRST设置:

CREATE FUNCTION dbo.WeekCommenceMondayDate(@MidWeekDate DateTime)
RETURNS DateTime AS
BEGIN
DECLARE @WeekCommence DateTime
    SET @WeekCommence = DateAdd(d, -((@@DATEFIRST + DatePart(dw, @MidWeekDate) -2) % 7), @MidWeekDate)
    RETURN @WeekCommence
END


declare @today datetime = '2010-12-04' 
declare @weekstartdate datetime

set  @weekstartdate = dbo.WeekCommenceMondayDate(@today)
select @weekstartdate as weekstartdate
select  DATEADD(DD, 6, @weekstartdate) as weekenddate

有关各种日期函数,请参阅here

答案 1 :(得分:0)

以下内容应该有效 - 显然取决于您何时需要几周开始 - 以及使用的语言,因此您可能需要调整它。

DELCARE @startdate DATETIME = @thedate
WHILE DATENAME(WEEKDAY, @startdate) <> 'Monday'
BEGIN
  SET @startdate = DATEADD(DAY, -1, @startdate)
END

' @startdate should now be the closest Monday on or prior to @thedate.

... @ enddate计算留给读者练习。 :)