如何用SQL CASE表达式调整日期变量:周一设为上周五,其余设为前一天
解决方案
可以用CASE语句结合DATEPART函数判断当前日期是否为周一,实现你要的逻辑:
declare @date varchar(10) select @date = CONVERT(varchar(10), CASE DATEPART(weekday, GETDATE()) WHEN 2 THEN GETDATE() - 3 -- 注:这里默认SQL Server中DATEPART返回2代表周一,若服务器星期起始设置不同,可调整对应数字 ELSE GETDATE() - 1 END, 101) print @date
关键说明
DATEPART(weekday, GETDATE())用于获取当前日期的星期序号,默认配置下SQL Server以周日为一周起始(周日=1、周一=2),如果你的服务器设置为周一为一周起始,只需把WHEN后的数字改成1即可。- 判定为周一时,用
GETDATE()-3得到上周五的日期;其他日期则取前一天,最后统一转换为varchar(10)格式(101对应MM/DD/YYYY格式)。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

