如何在 oracle 中使用 trunc(sysdate) 获取以前的工作日期
How to get previous working date using trunc(sysdate) in oracle
今天的问候!
我已经编写了一个 python 脚本,它将 运行 使用 oracle 数据库进行 select 查询,并将根据从该查询获得的结果与用户共享结果。我的目查询日期为星期五,如果星期二则为星期一,依此类推。
注意:在 T+1 基础上查询 运行s 的报告意味着如果 asof 日期是 2022 年 4 月 21 日意味着它的实际开始时间将是 2022 年 4 月 22 日,所以什么时候 运行 4 月 25 日(星期一)截止日期为 4 月 22 日
select* from snap_states
where asof = trunc(sysdate)-1
and upper(system) like ('LOANSL%')
order by start_time;***
如果您跳过周末,那么您可以
SQL> with datum (sys_date) as
2 (select date '2022-04-23' from dual union all -- Saturday
3 select date '2022-04-24' from dual union all -- Sunday
4 select date '2022-04-25' from dual union all -- Monday
5 select date '2022-04-26' from dual -- Tuesday
6 )
7 select to_char(sys_date, 'dd.mm.yyyy, Dy') sys_date,
8 trunc(sys_date - case to_char(sys_date, 'Dy', 'nls_date_language = english')
9 when 'Sun' then 2
10 when 'Mon' then 3
11 else 1
12 end) as prev_work_day
13 from datum;
SYS_DATE PREV_WORK_
------------------------ ----------
23.04.2022, Sat 22.04.2022
24.04.2022, Sun 22.04.2022
25.04.2022, Mon 22.04.2022
26.04.2022, Tue 25.04.2022
SQL>
应用于您的查询:
select *
from snap_states
where asof = trunc(sysdate - case to_char(sysdate, 'Dy', 'nls_date_language = english')
when 'Sun' then 2
when 'Mon' then 3
else 1
end)
and upper(system) like 'LOANSL%'
order by start_time;
今天的问候!
我已经编写了一个 python 脚本,它将 运行 使用 oracle 数据库进行 select 查询,并将根据从该查询获得的结果与用户共享结果。我的目查询日期为星期五,如果星期二则为星期一,依此类推。
注意:在 T+1 基础上查询 运行s 的报告意味着如果 asof 日期是 2022 年 4 月 21 日意味着它的实际开始时间将是 2022 年 4 月 22 日,所以什么时候 运行 4 月 25 日(星期一)截止日期为 4 月 22 日
select* from snap_states
where asof = trunc(sysdate)-1
and upper(system) like ('LOANSL%')
order by start_time;***
如果您跳过周末,那么您可以
SQL> with datum (sys_date) as
2 (select date '2022-04-23' from dual union all -- Saturday
3 select date '2022-04-24' from dual union all -- Sunday
4 select date '2022-04-25' from dual union all -- Monday
5 select date '2022-04-26' from dual -- Tuesday
6 )
7 select to_char(sys_date, 'dd.mm.yyyy, Dy') sys_date,
8 trunc(sys_date - case to_char(sys_date, 'Dy', 'nls_date_language = english')
9 when 'Sun' then 2
10 when 'Mon' then 3
11 else 1
12 end) as prev_work_day
13 from datum;
SYS_DATE PREV_WORK_
------------------------ ----------
23.04.2022, Sat 22.04.2022
24.04.2022, Sun 22.04.2022
25.04.2022, Mon 22.04.2022
26.04.2022, Tue 25.04.2022
SQL>
应用于您的查询:
select *
from snap_states
where asof = trunc(sysdate - case to_char(sysdate, 'Dy', 'nls_date_language = english')
when 'Sun' then 2
when 'Mon' then 3
else 1
end)
and upper(system) like 'LOANSL%'
order by start_time;