DECLARE @DATE SMALLDATETIME
DECLARE @DAYS INT
SET @DAYS=7
SET @DATE=GETDATE()SET DATEFIRST 1
WHILE @DAYS>=1
BEGIN
IF DATEPART(DW,@DATE)=7 AND @DATE<GETDATE()
BREAK
SET @DATE=DATEADD(DAY,-1,@DATE)
SET @DAYS=@DAYS-1
ENDSELECT @DATE
/*
2008-11-23 17:57:00
*/
set @date=getdate()
select @date-7-datepart(dw,@date-1+@@datefirst)2008-11-16 18:03:44.530
DECLARE @DATE SMALLDATETIME
DECLARE @DAYS INT
SET @DAYS=7
SET @DATE=GETDATE()SET DATEFIRST 1
WHILE @DAYS>=1
BEGIN
IF DATEPART(DW,@DATE)=7 AND @DATE<GETDATE()
BREAK
SET @DATE=DATEADD(DAY,-1,@DATE)
SET @DAYS=@DAYS-1
ENDSELECT @DATE