Sql 前一天日期(不包括周末)

Sql 前一天日期(不包括周末),sql,oracle,Sql,Oracle,我试图在TOAD中创建一个SQL查询,从Oracle数据库检索数据。 它应该做的是检索上一个工作日到一周的所有数据,但不包括周六和周日。 到目前为止,我创建了下面的查询。在这种格式中,它会返回一条“缺少关键字”错误消息。蟾蜍突出显示了我的第一个“中间”操作符。 我觉得我就快到了。谁能把我推向正确的方向 谢谢 Select orderkey, actualshipdate from orders Case to_char(sysdate, 'DAY') When 'MONDAY' then to_

我试图在TOAD中创建一个SQL查询,从Oracle数据库检索数据。 它应该做的是检索上一个工作日到一周的所有数据,但不包括周六和周日。 到目前为止,我创建了下面的查询。在这种格式中,它会返回一条“缺少关键字”错误消息。蟾蜍突出显示了我的第一个“中间”操作符。 我觉得我就快到了。谁能把我推向正确的方向

谢谢

Select orderkey, actualshipdate
from orders
Case to_char(sysdate, 'DAY')
When 'MONDAY'
then to_char(actualshipdate,'YYYYMMDD') between to_char(sysdate, 'YYYYMMDD') -11 and  to_char(sysdate, 'YYYYMMDD')-3
else to_char(actualshipdate,'YYYYMMDD') between to_char(sysdate, 'YYYYMMDD') -8 and  to_char(sysdate, 'YYYYMMDD')-1
end
order by actualshipdate asc
根据您的描述(并替换日期的可怕字符):


谢谢这就是诀窍。不过,它也向我显示了sysdate的数据。有没有办法把这些也排除在外?我怀疑这个问题是否有效<代码>至字符(实际装运日期,'DAY')返回
'SATURDAY'
,分别为<代码>'SUNDAY'-它们都不匹配,请注意,它们用空格填充。此外,它假定您当前的
NLS\u DATE\u语言为英语或类似语言。正确。刚刚再次检查了JohnHC提供的查询。它还显示了周六和周日的数据。我忽略了它们,因为它们只有6行。还有什么办法可以把周末排除在外?@MartijnDrohm-Update-madeThanks。经过一些个人调整后,现在它看起来很完美。只有“不在(6,7)”必须是“不在(7,1)”
select orderkey, actualshipdate
from orders
where 1=1
and actualshipdate between trunc(sysdate) - 8 
                     and trunc(sysdate)-(1/86400) -- midnight last night minus 1 second
and to_char(actualshipdate, 'D') not in (6,7) -- 6: Sat, 7: Sun