繁体   English   中英

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

[英]SQL - Get all dates between Current day and start and end of week

我正在尝试将开始日期设置为星期六

SET DATEFIRST 6 -- Sets start day to Saturday

然后获取一周开始和一周结束之间的所有 GameDate。 但是需要在当天完成。 例如:如果当天是星期四,周末是星期五,我不想这样做:

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 天。 如果 CurrentDay 是在星期四,我不希望显示接下来的 5 天。 只是每周的 GameDates。

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

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;

有些查询可能是错误的,尤其是最后一部分。

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

看一看:

 -- Sets start day to Saturday SET DATEFIRST 6 -- Creates table DECLARE @DateTable Table ([DateofWeek] date); -- StartDate = DATEPART(DW, ... ) = 1 DECLARE @StartDate date; SET @StartDate = DATEADD(day, (DATEPART(dw, GETDATE()) - 1) * -1, GETDATE()); -- EndDate = StartDate + 6 days DECLARE @EndDate date; SET @EndDate = DATEADD(day, 6, @StartDate); -- Generates table values DECLARE @CurrentDate date; SET @CurrentDate = @StartDate; WHILE @CurrentDate <= @EndDate BEGIN INSERT INTO @DateTable ([DateofWeek]) VALUES (@CurrentDate); SET @CurrentDate = DATEADD(day, 1, @CurrentDate); END --Check it SELECT *, DATENAME(dw, DateOfWeek) as Name FROM @DateTable;

\n星期日期 | 姓名     \n :------------------ |  :--------\n 18/03/2017 00:00:00 | 周六 \n 19/03/2017 00:00:00 | 星期日   \n 20/03/2017 00:00:00 | 周一   \n 21/03/2017 00:00:00 | 周二  \n 22/03/2017 00:00:00 | 周三\n 23/03/2017 00:00:00 | 周四 \n 24/03/2017 00:00:00 | 星期五   \n

dbfiddle 在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM