发布网友 发布时间:2022-05-02 05:43
共3个回答
懂视网 时间:2022-05-02 10:04
OR REPLACE FUNCTION "FUN_BETWEENDAYS" (start_dt date, end_dt date) return int is t_days int; begin select (trunc(end_dt - start_dt) - ((case WHEN (8 - to_number(to_char(start_dt,‘D‘))) > trunc(end_dt - start_dt) + 1 THEN 0 ELSE trunc((trunc(end_dt - start_dt) - (8 - to_number(to_char(start_dt,‘D‘))))/7) + 1 END) + (case WHEN mod(8 - to_char(start_dt, ‘D‘), 7) > trunc(end_dt - start_dt) - 1 THEN 0 ELSE trunc((trunc(end_dt - start_dt) - (mod(8 - to_char(start_dt,‘D‘),7) + 1))/7) + 1 END))) into t_days from dual; return t_days; end FUN_BETWEENDAYS
两个日期间隔三个工作日的sql语句
标签:font ase trunc 工作 ber class ace function number
热心网友 时间:2022-05-02 07:12
你的时间保存数据类型是什么?date么?如果是date,判断时间点所属范围,如果开始时间属于14-18,结束时间属于9-12,并且时间相减的结果大于1,那么就可以得到结果为,时间相减(得到答案为天)*24-时间相减取整数(trunc)*17+2,如果如果开始时间属于14-18,结束时间属于9-12,并且时间相减的结果小于1,那么结果为,时间相减(得到答案为天)*24-15,其他情况均为时间相减(得到答案为天)*24-时间相减取整数(trunc)*17。追答错了,不是这么写的是一个case when
类似
select case when 开始时间 14-18 and 结束时间 9-12 and 结束时间-开始时间>1 then (结束时间-开始时间)*24-trunc(结束时间-开始时间)*17+2 when 开始时间 14-18 and 结束时间 9-12 and 结束时间-开始时间<1 then (结束时间-开始时间)*24-15 else (结束时间-开始时间)*24-trunc(结束时间-开始时间)*17 end
热心网友 时间:2022-05-02 08:30
先算两个日期相隔几天,记为dayBetween(日期相减);