如何减去“ Sysdate”的日期范围

问题描述 投票:0回答:1

我有一个称为“昨天的任务”的查询,并检查今天是否是星期一。如果是星期一,它将为我提供上一个星期五的任务,如果不是,则为我提供前一天的任务。由于我们也开始在周末工作,所以我想如果是星期一,它将给我星期五,星期六和星期天的任务。那是我当前的代码:

select
to_char(sysdate -0.25,'DAY') day,
t.task_id,
NVL (pu.part_id, 'NONE') part_id,
t.request_id,
(select(concat(concat (p.first_name, ' '), p.last_name)) from person p where t.person_id = p.person_id) name,
pu.quantity,
to_number(pu.user_def15, '9999999.99') lunch,
to_char(cast(t.actual_start_dttm as timestamp) at time zone 'US/Eastern', 'HH24:MI') started,
to_char(cast(t.actual_end_dttm as timestamp) at time zone 'US/Eastern', 'HH24:MI') ended,
NVL(pu.user_def2, 'MISSING') description,
case when NVL(pu.user_def2, 'MISSING') = 'MISSING' then '#FF0000' else '#000000' end description_c,
t.task_status,
to_char(t.plan_start_dttm, 'YYYY-MM-DD') start_date,
to_char (sysdate-0.25,'DD-MM-YYYY HH24:MI') today
from task t 
LEFT JOIN part_usage pu ON t.task_id = pu.task_id
where t.access_group = 'CAPCA'
and NVL(pu.part_id, 'NONE') IN ('030X001', '030A01','NONE')
and to_char(t.plan_start_dttm, 'YYYY-MM-DD') =
CASE WHEN
to_char(sysdate - 0.25,'DAY') = 'MÅNDAG '
THEN
 to_char (sysdate-3.25, 'YYYY-MM-DD')
ELSE
 to_char (sysdate-1.25, 'YYYY-MM-DD')
END
order by name

所以我想将'THEN'修改为sysdate-3.25、2.25和1.25。

谢谢

sql oracle
1个回答
0
投票

这是您要寻找的吗?

sydate - case to_char(sysdate - 0.25, 'D') = '1' then 3.25 else 0.25 end
© www.soinside.com 2019 - 2024. All rights reserved.