【发布时间】:2022-01-17 07:15:17
【问题描述】:
继续我之前的问题:case when date column is greater than sysdate then 'Y'
我忘记考虑的一件事是在计算中包括工作日。
这里是查询:
select
v.voyage "Voyage"
,v.service "Service"
,to_char(vp.eta_date, 'MONTH dd, yyyy') "ETA"
,case
when v.service = 'USA' then to_char(vp.eta_date - 2, 'MONTH dd, yyyy')
else 'n/a'
end as "Notice"
,case
CASE WHEN v.service = 'USA' AND vp.eta_date - 2 > sysdate THEN 'Y'
ELSE 'N'
end as "Sent"
from
table
所以我需要在上面的计算中排除周六和周日。
我尝试在 where 子句中添加这个:
to_char(vp.eta_date, 'DY') NOT IN ('SAT', 'SUN')
但计算似乎不起作用。
如果我采用 vp.eta_date - 5,例如,我将使用 2021 年 12 月 22 日。我应该得到以下日期:
December 16th
但我要到 12 月 17 日。
这当然让我相信我尝试过的方法不起作用。
我该如何解决这个问题?
【问题讨论】:
-
将它添加到 where 子句如何更改日期减法?
-
@OldProgrammer - 这是有道理的。