如何解决检查工作日而不是周末的日子
我正在寻找:
[Status.SchedFundingDate] 是否在 [今天]+[1 个工作日] 或之前
为此我得到了:
convert(varchar(10),[Status.SchedFundingDate],112) <= convert(varchar(10),getdate() + 1,112)
我正在尝试找出的当前查询:
[Status.SchedFundingDate] 是否在 [今天]+[1 个日历日] 或之前
CASE WHEN UPPER(DATENAME(DW,getdate())) = 'FRIDAY'
THEN convert(varchar(10),getdate() + 3,112)
ELSE convert(varchar(10),112)
END
上面的 sql 语句在“
解决方法
( @@DateFirst + DatePart( weekday,YourDate ) - 1 ) % 7 + 1
将始终返回一个从 1
到 7
的整数,其中 1
对应于星期日,无论 DateFirst
或 Language
的设置如何.
您可以在 case
表达式中使用它通过添加所需的天数来调整周末的日期:
-- Generate some sample data.
with Dates as (
select GetDate() as ADate,1 as NumberOfDates
union all
select DateAdd( day,1,ADate ),NumberOfDates + 1
from Dates
where NumberOfDates <= 14 )
-- Demonstrate adjusting weekend dates to the next Monday.
select ADate,DateName( weekday,ADate ) as Weekday,DateAdd( day,case ( @@DateFirst + DatePart( weekday,ADate ) - 1 ) % 7 + 1
when 1 then 1 -- Sunday.
when 7 then 2 -- Saturday.
else 0 end,ADate ) as AdjustedADate
from Dates;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。