Wie bekomme ich die data für die aktuelle Woche von MSSQL

Ich wollte wissen, wie ich die Aufzeichnungen für die aktuelle Woche bekommen kann.

Die Abfrage, die ich verwende, ist:

DECLARE @TableX TABLE ([Date] DATETIME) INSERT INTO @TableX SELECT '2014-2-17' UNION ALL SELECT '2014-2-18' UNION ALL SELECT '2014-2-19' UNION ALL SELECT '2014-2-20' UNION ALL SELECT '2014-2-21' SELECT * FROM @TableX WHERE Date >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) / 7 * 7, 0) AND Date <= DATEADD(DAY, DATEDIFF(DAY, -1, GETDATE()), 0) 

Die Abfrage, die ich geschrieben habe, erzeugt die data nicht korrekt? Kann mir jemand bitte sagen, was in der Abfrage falsch ist.

Die Aufzeichnungen, die ich aus dieser Abfrage bekomme, sind:

 2014-02-17 00:00:00.000 2014-02-18 00:00:00.000 

Bitte versuchen Sie es mit CTE. Unterhalb der Abfrage Rückkehr 7 Tage der Woche unter Berücksichtigung Sonntag als Wochentag Tag.

 ;WITH t AS (SELECT Dateadd(wk, Datediff(wk, 0, Getdate()), -1) AS WeekD, 1 cnt UNION ALL SELECT weekd + 1, cnt + 1 FROM t WHERE cnt + 1 < 8) SELECT CONVERT(NVARCHAR(20), weekd, 106) WeekDate, dataame(dw, weekd) Name FROM t 

Dies wird alle Reacords mit der gleichen Woche Nummer und im selben Jahr.

 select * from cal where date_format(cal_date,'%v') = date_format(now(),'%v') and date_format(cal_date,'%Y')=date_format(now(),'%Y'); 

Probieren Sie diese Proc

 Create PROCEDURE getAllDaysBetweenTwoDate ( @FromDate DATETIME, @ToDate DATETIME ) AS BEGIN DECLARE @TOTALCount INT SET @FromDate = dateadd(dd,(datediff(dd,-53684,getdate())/7)*7,-53684) SET @ToDate = dateadd(dd,((datediff(dd,-53684,getdate())/7)*7)+6,-53684) Select @TOTALCount= DATEDIFF(DD,@FromDate,@ToDate); WITH d AS ( SELECT top (@TOTALCount) AllDays = DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY object_id), REPLACE(@FromDate,'-','')) FROM sys.all_objects ) SELECT AllDays From d RETURN END GO 

einfachste Weise, die ich vorschlagen kann, um eine dateswoche zu erhalten, ist dieses>

 select datepart(wk, [date to test]) as field 

ich hoffe es hilft!