发布网友 发布时间:2022-04-10 05:25
共3个回答
懂视网 时间:2022-04-10 09:46
* * 判断两个日期间隔几个工作日 */ CREATE 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;
ORACLE判断两个日期间隔几个工作日
标签:star art mod function char 存储 ret 存储过程 time
热心网友 时间:2022-04-10 06:54
在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来,并不是一件难事。常用的方法是:Select to_number(to_char(sysdate,'yyyy')) from al,而实际上,oracle本身有更好的方法,那就是使用Extract函数,使用方法是:Select Extract(year from sysdate) from al,这种方法省掉了类型转换,看上去更加简洁。相应的,要取得月份或日,可以用select extract (month from sysdate) from al和select extract (day from sysdate) from al。 此方法获得的结果,是数值型的,你可以设置一个方法测试一下。热心网友 时间:2022-04-10 08:12
SELECT 日期列,TRUNC((SELECT MIN(日期列) FROM 表名 WHERE 日期列>W.日期列)-日期列) 与下一日期相隔天数