将周六和周日日期替换为上周五的日期

问题描述 投票:0回答:1

我有一个通用的日期表。

我正在尝试实现以下输出

enter image description here

我似乎无法通过使用这种情况来获得正确的输出

SELECT 
DayOfWeek,
ShortDate,

CASE WHEN (DayOfWeekNumber = '1' OR DayOfWeekNumber = '7') -- Saturday or Sunday
THEN (SELECT TOP 1 ShortDate FROM DateTable DD WHERE DayOfWeekNumber = 6) 
ELSE ShortDate  END AS ExpectedShortDate

FROM DateTable
WHERE ShortDate >= '3/13/2020' 

这是我所看到的输出

enter image description here

我知道为什么会得到'1/5/1900',这是因为那是我表中的第一个日期是星期五。但是,出于我的目的,应将每个星期六和星期日的日期替换为上一个星期五的日期。

任何帮助将不胜感激。

sql date
1个回答
0
投票
假设您正在使用SQL Server(如查询中建议使用select top 1:]

select date, case datepart(weekday, date) when 7 then dateadd(day, -1, day) -- saturday when 1 then dateadd(day, -2, day) -- sunday else date end expected_date from dateTable;

© www.soinside.com 2019 - 2024. All rights reserved.