周末日期可见
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
我有一个视图,我需要在其中显示每一行的周末日期。我使用了以下查询:
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