2017-05-27 5 views
1

私はストアドプロシージャを記述しています。すべての火曜日の間にある日付のテーブル要素のリストを取得したい。例えば、今日の人のexec手続きの日付が2017-05-28で、2017-05-23 00:00:00.000と2017-05-30 00:00:00.000の間にリストを取得したいとします。今日の日付が、2017-05-23 00:00:00.000から2017-05-30 00:00:00.000の間に再び2017-05-28である場合。 2017-04-25 00:00:00.000〜2017-05-02 00:00:00.000 の間の日付が2017-05-01の場合 私は日付が、それは2017年5月30日に00与え動作していないSql発行日間

GO 
/****** Object: StoredProcedure [dbo].[mobile_group_match_list] Script Date: 05/28/2017 00:03:11 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 

-- ============================================= 
ALTER PROCEDURE [dbo].[mobile_group_match_list] 

    @refGroup bigint 
AS 
BEGIN 

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT refLeaugeTeam INTO #TEAMS FROM [GROUP_TEAM] gt WHERE [email protected] 

    SELECT Id,[Guid],HomeTeam,AwayTeam,HomePoint,EqualPoint,AwayPoint,MatchDate,HomeScore,AwayScore,@refGroup as refGroup 
    FROM MATCH m 
    WHERE ((m.HomeTeam IN (SELECT refLeaugeTeam FROM #TEAMS)) OR (m.AwayTeam IN (SELECT refLeaugeTeam FROM #TEAMS))) 
    AND MatchDate>=DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 1) 
    AND MatchDate<DATEADD(ww, DATEDIFF(ww,0,GETDATE()) + 1, 1) 

    SELECT lt.Id,T.Team FROM TEAM t,LEAUGE_TEAM lt WHERE lt.refTeam=t.Id 
END 

を書いた:00.000が、それは2017年5月23日0時00なければならない:00:00.000と2017年6月6日00:00 00.000と2017-05-30 00:00:00.000

この問題を解決するにはどうすればよいですか?事前に感謝

答えて

1

これを試してください。

AND MatchDate>=dateadd(dd,datediff(dd,0,getdate())/7 * 7 + 1,0) 
    AND MatchDate<dateadd(dd,datediff(dd,-7,getdate())/7 * 7 + 1,0)