Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-获取当前日期和每周开始和结束之间的所有日期_Sql_Sql Server_Tsql_Datediff_Dateadd - Fatal编程技术网

SQL-获取当前日期和每周开始和结束之间的所有日期

SQL-获取当前日期和每周开始和结束之间的所有日期,sql,sql-server,tsql,datediff,dateadd,Sql,Sql Server,Tsql,Datediff,Dateadd,我想把开始的日子定在星期六 SET DATEFIRST 6 -- Sets start day to Saturday 然后获取从本周开始到本周结束的所有游戏日期。但这需要在今天完成。例如:如果今天是星期四,周末是星期五,我不想这样做: DECLARE @StartWeek datetime Set @StartWeek = DATEADD(w, 0, DATEADD(w, DATEDIFF(w, 0,GETDATE()), -5)) DECLARE @EndWeek datetime Set

我想把开始的日子定在星期六

SET DATEFIRST 6 -- Sets start day to Saturday
然后获取从本周开始到本周结束的所有游戏日期。但这需要在今天完成。例如:如果今天是星期四,周末是星期五,我不想这样做:

DECLARE @StartWeek datetime Set @StartWeek = DATEADD(w, 0, DATEADD(w, DATEDIFF(w, 0,GETDATE()), -5))
DECLARE @EndWeek datetime Set @EndWeek = DATEADD(w, 0, DATEADD(w, DATEDIFF(w, 0,GETDATE()), 1))
因为这将使它在接下来的5天内得到展示。 如果今天是星期四,我不想在接下来的5天里出现。只是每周的比赛日期

到目前为止,我得到的是:

DECLARE @DateTable Table (DateofWeek Date) -- Creates table
DECLARE @DateToday Date SELECT DAY(GETDATE()) 'Current Day' -- Gets current date

DECLARE @StartWeek datetime Set @StartWeek = DATEADD(w, 0, DATEADD(w, DATEDIFF(w, 0,GETDATE()), -5)) --This is the part thats wrong
DECLARE @EndWeek datetime Set @EndWeek = DATEADD(w, 0, DATEADD(w, DATEDIFF(w, 0,GETDATE()), 1)) --This is the part thats wrong

SET DATEFIRST 6 -- Sets start day to Saturday


SELECT DATEDIFF ( DAY, @DateToday, @EndWeek) AS Diffrence_End
SELECT DATEDIFF ( DAY, @DateToday, @StartWeek) AS Diffrence_Start
    FROM @DateTable

WHILE @DateToday >= @EndWeek AND @DateToday <= @StartWeek -- Shows all gameDates between StartWeek and Endweek
BEGIN   
    SELECT DATEDIFF ( DAY, @DateToday, @EndWeek)
    Insert Into @DateTable



SELECT * 
    FROM @DateTable
END;
有些查询可能是错误的,尤其是最后一部分

我希望我说得够清楚,如果有任何问题,请不要犹豫问我

看看:

DateofWeek | Name :------------------ | :-------- 18/03/2017 00:00:00 | Saturday 19/03/2017 00:00:00 | Sunday 20/03/2017 00:00:00 | Monday 21/03/2017 00:00:00 | Tuesday 22/03/2017 00:00:00 | Wednesday 23/03/2017 00:00:00 | Thursday 24/03/2017 00:00:00 | Friday 小提琴

DateofWeek | Name :------------------ | :-------- 18/03/2017 00:00:00 | Saturday 19/03/2017 00:00:00 | Sunday 20/03/2017 00:00:00 | Monday 21/03/2017 00:00:00 | Tuesday 22/03/2017 00:00:00 | Wednesday 23/03/2017 00:00:00 | Thursday 24/03/2017 00:00:00 | Friday