Gör så här:
SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT [...]
AND WorkDate >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate()))
AND WorkDate < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate()))
Förklaring:
datepart(dw, getdate())
kommer att returnera dagens nummer i den aktuella veckan, från 1 till 7, med början med vad du än har angett med STÄLL IN DATUM FÖRST .dateadd(day, 1-datepart(dw, getdate()), getdate())
subtraherar det nödvändiga antalet dagar för att nå början av den aktuella veckanCONVERT(date,getdate())
används för att ta bort tidsdelen av GETDATE(), eftersom du vill ha data som börjar vid midnatt.