周末日期可见

Weekending date in view

我有一个视图,我需要在其中显示每一行的周末日期。我使用了以下查询:

SELECT     TOP (100) PERCENT [Delivery Date], [Delivery Method], [Order Total], YEAR([Delivery Date]) AS Year, DATEADD(d, 7 - DATEPART(dw, [Delivery Date]), [Delivery Date]) 
                      AS WeekEnd
FROM         dbo.salesdata
ORDER BY [Delivery Date] DESC

工作正常,除了周末日期是基于星期日作为一周的第一天,而不是新西兰的标准星期一。

我环顾四周,唯一可行的选项是设置 DATEFIRST,但您不能在视图中设置它。

请帮忙!

尝试以下方法以向前推进一天,但不会在本周初被绊倒。这里的关键是模数“%”,它将调整后的天数回滚到开始。如果您的一周从星期三开始,您只需将“+ 1”替换为“+ 3”即可。

DATEADD(d, (7 - DATEPART(dw, [Delivery Date]) + 1) % 7, [Delivery Date]) AS WeekEnd

SELECT TOP (100) PERCENT
    [Delivery Date],
    [Delivery Method],
    [Order Total],
    YEAR([Delivery Date]) AS Year,
    DATEADD(d, (7 - DATEPART(dw, [Delivery Date]) + 1) % 7, [Delivery Date]) AS WeekEnd
FROM dbo.salesdata
ORDER BY [Delivery Date] DESC