参考
http://zw7534313.iteye.com/blog/609277#comments
如蓝色粗体所示,否则yk不对
CREATE OR REPLACE FUNCTION GETWORKDAYS (startdate DATE, enddate DATE)
RETURN NUMBER IS
rs INTEGER;
counts INTEGER; --两日期间的天数
weeknum INTEGER; --星期几
yunum INTEGER; --余数
yk INTEGER; --余数中有几天周末
BEGIN
SELECT FLOOR(enddate-startdate) INTO counts FROM dual; --不包括enddate这一天
counts:=counts+1; --//包括enddate这一天(加1)
rs:=counts;
yk:=0;
SELECT MOD(counts,7) INTO yunum FROM dual;
SELECT TO_NUMBER(TO_CHAR(startdate,'D')) INTO weeknum FROM dual;
IF yunum>0 THEN
BEGIN
CASE weeknum
WHEN 6 THEN
BEGIN
IF yunum>1 THEN yk:=2;
ELSE yk:=1;
END IF;
END;
WHEN 1 THEN
yk:=1;
ELSE
BEGIN
yk:=yunum-(7-weeknum);
IF yk<0 THEN
yk:=0;
ELSE
yk:=2;
END IF;
END;
END CASE;
END;
END IF;
rs:=rs-FLOOR(rs/7) *2-yk; --//注意integer 类型的rs/7
RETURN rs;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END GETWORKDAYS;
分享到:
相关推荐
下面详细解释了如何实现一个SQL函数来计算两个日期之间的有效工作日数量,仅排除周末。 ```sql USE [UnderWritting] GO /****** Object: UserDefinedFunction [dbo].[fn_WorkDay] ScriptDate: 02/20/2013 17:32:07 ...
利用 oracle sql 实现 计算一段时间内(除去周六日)的秒数
使用Oracle的SQL函数实现工作日和节假日分组统计 本文介绍了使用Oracle的SQL函数来实现工作日和节假日的分组统计,通过对工作日和节假日的判断和统计,可以更好地合理调度人力物力资源,制定节假日劳务补贴政策。...
在Oracle数据库中,获取下一个法定工作日期是一个常见的需求,尤其在进行日程安排或业务处理时。本篇文章将深入探讨如何使用Oracle内置函数以及自定义函数来实现这一功能。我们将结合具体的代码示例来理解这一过程。...
但是,这仅仅计算了两个日期间的总天数,没有排除周末和节假日。为了实现这一功能,我们需要维护一个节假日列表,通常以数组或容器(如`std::vector`)的形式存储。节假日可以是固定的日期(如新年、国庆节),也...
本人编写,通过自己定义的函数计算两个日期之间周末的天数和工作日天数,经过测试,非常好用
压缩包里有2个文件,用于计算两个日期相差的工作日天数(排除周末和法定节假日): 1、excel表为2023年日历数据,并且备注工作日、周末,调休、节假日类型,可导入数据库。 2、SQL文件为2023年所有日期的插入SQL,并...
通过简单的设置,可查询工作日相关信息。如:今天是本月第几个工作日,今天是本年度第几个工作日,今天之后第N个工作日是哪天,之前的第N个工作日是哪天等。对计算同比,环比,限时办结等需求帮助很大。
Oracle 计算非工作时间(去除周末,自定义节假日,等待时间)
在“WW”格式中,每年的1月1日被视为第一周的开始,而该周的最后一天则是1月1日后的第六天。基于这一定义,我们可以得出以下计算公式: - **每周的第一天**:`date + 周 * 7 - 7` - **每周的最后一天**:`date + 周...
oracle语句查询两个日期之间星期六、星期日的天数
在Oracle数据库中,计算某个日期属于其前一个月中的第几个自然周是一项常见的需求,这在数据分析、报表生成或业务逻辑处理中很有用。这个任务可以通过编写一个自定义函数来实现,例如提供的`to_week_by_month.fnc`...
2、压缩包内有2个文件: ①.Excel表列举了2025年所有日期,并标记了日期类型(0:工作日 1:周末 2:节假日)。 ②.文本文件内含有关sql,基于Oracle,建表sql,日期数据新增sql,并也标记了日期类型(0:工作日 1:...
通过入参 生日 ,计算日期(默认sysdate),计算年龄 精确到秒
2. **转换为自1970年1月1日以来的天数**:接着将`SYSDATE`减去1970年1月1日(使用`TO_DATE`函数)得到的结果表示的是自1970年1月1日至当前日期的时间差(单位是天)。 3. **转换为毫秒数**:由于一天有86400秒,而...
2. SGA区过大:如果NIT文件中设置的SGA区(System Global Area)过大,可能导致内存不足,使数据库和操作系统都无法正常工作。调整SGA大小以适应系统资源是解决办法。 3. 临时表空间无法扩展:临时表空间满时,...
根据给定的信息,本文将详细解释如何在Oracle数据库中计算从2000年1月1日至今经过了多少个月和多少个星期,并且结果需要进行四舍五入处理。 ### Oracle数据库中的日期函数 在Oracle数据库中,进行日期计算是非常...
标题“Oracle 获取某日期属于一年中的第几个自然周”指的是在Oracle数据库系统中,通过SQL查询来确定一个特定日期在当年是第几周的问题。在实际业务中,这样的功能可能用于统计、报告或者数据分析,例如,公司可能...
在oracle中利用函数实现计算公式解析|在oracle中利用函数实现计算公式解析
计算两个日期相隔天数并减去节假日,这个可以使用在各种需要通知的场景以及工作日提醒等