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