如何计算 Oracle 10g 中两个日期之间的工作时间或天数?
例如我们有两个日期; 14/08/2012 9:30 和 16/08/2012 12:00 工作日工作时间为 09:30 至 18:30。
如何使用 oracle 10g 计算工作时间或工作日(不包括国定假日、周六和周日)?
最佳答案
你不能。就这么简单。世界各地的国定假日各不相同,每年都有所不同,并且可以随时添加或取消额外的假日。此外,一些司法管辖区将周末的国定假日延续到下周;其他人则不然。
您需要创建一个日历表并在其中标记国家假日/周末等。
例如
create table calender
( day date
, weekend varchar2(1)
, holiday varchar2(1)
);
然后向其中插入一些数据...
insert into calender (day, weekend)
select trunc(sysdate + level)
, case when to_date(sysdate + level,'fmDAY') in ('SATURDAY','SUNDAY')
then 'Y' else 'N' end
from dual
connect by level <= 365
最后,手动更新您算作国家法定节假日的日期。
然后,您可以选择工作日,具体取决于您如何使用以下内容填充它:
select count(*)
from calender
where day between :startdate and :enddate
and weekend = 'N'
and holiday = 'N'
关于oracle - 如何获取两个日期之间的工作日或小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953134/