sql server-如何将星期六或星期日的计算日期替换为前一个星期五



我通过从到期日减去交付周期来计算发货日期。如果计算的发货日期是周六或周日,我希望计算的日期改为前一个周五。

当我使用此WHERE语句(在此处找到)时,周六或周日的记录将从结果中排除。

SELECT
  due_date, 
  due_date - CAST(lead_time AS NUMERIC(3,0)) AS [Latest Ship Date]
FROM order_line_table
WHERE (((DATEPART(dw, due_date - CAST(lead_time AS NUMERIC(3,0)))
  + @@DATEFIRST) % 7) NOT IN (0,1)

有没有办法在计算周六或周日时默认为周五?这个线程建议在联接中使用CASE,但这给了我转换错误

消息402,级别16,状态1,第27行。

服务器被配置为使得周日是第1天,周六是第7天。

试试这个:

select 
  due_date,
  case DATEPART(dw, [Latest Ship Date]) 
    when 1 then DATEADD(DAY, -2, [Latest Ship Date])
    when 7 then DATEADD(DAY, -1, [Latest Ship Date])
    else [Latest Ship Date]
  end as [Latest Ship Date]
from (SELECT
      due_date, 
      due_date - CAST(lead_time AS NUMERIC(3,0)) AS [Latest Ship Date]
      FROM order_line_table) x

最新更新