Vì bây giờ bạn đã đề cập rằng bạn không có bảng cho ngày tháng, bạn có thể tiếp cận nó như thế này nếu bạn không muốn thêm một bảng lịch chung vào cơ sở dữ liệu của mình.
declare @startdate datetime
declare @enddate datetime
DECLARE @startdateLoop datetime
select @startdate = CAST(start as DATE), @enddate = CAST(end_date as DATE) from #t
set @startdateLoop = @startdate
CREATE TABLE #tempCal
(dates datetime)
WHILE @startdateLoop != @enddate
BEGIN
INSERT INTO #tempCal
SELECT @startdateLoop
SET @startdateLoop = DATEADD(dd, 1, @startdateLoop)
END
SELECT * FROM #tempCal
WHERE dates between @startdate and @enddate and DAYOFWEEK(dates) = 1
Bạn có thể biến điều này thành một thủ tục nếu bạn muốn.
Vẫn sẽ tốt nếu bạn CÓ một bảng lịch; như Tim đã gợi ý.