微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查工作日而不是周末的日子

如何解决检查工作日而不是周末的日子

我正在寻找:

[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 将始终返回一个从 17 的整数,其中 1 对应于星期日,无论 DateFirstLanguage 的设置如何.

您可以在 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 举报,一经查实,本站将立刻删除。