在Oracle中实现时间相加处理
-- 名称:Add_Times
-- 功能:返回d1与NewTime相加以后的结果,实现时间的相加
-- 说明:对于NewTime中的日期不予考虑
-- 日期:
-- 版本:1.0
-- 作者:
create or replace function Add_Times(d1 in date,NewTime in date) return date
is
hh number;
mm number;
ss number;
hours number;
dResult date;
begin
-- 下面依次取出时、分、秒
select to_number(to_char(NewTime,'HH24')) into hh from dual;
select to_number(to_char(NewTime,'MI')) into mm from dual;
select to_number(to_char(NewTime,'SS')) into ss from dual;
-- 换算出NewTime中小时总和,在一天的百分几
hours := (hh + (mm / 60) + (ss / 3600))/ 24;
-- 得出时间相加后的结果
select d1 + hours into dResult from dual;
return(dResult);
end Add_Times;
CREATE OR REPLACE FUNCTION Get_WorkingDays(
ny IN VARCHAR2
) RETURN INTEGER IS
/*-----------------------------------------------------------------------------------------
函数名称:Get_WorkingDays
中文名称:求某一年月中共有多少工作日
作者姓名:
编写时间:
输入参数:NY:所求包含工作日数的年月,格式为yyyymm,如200405
返 回 值:整型值,包含的工作日数目。
算法描述:使用Last_day函数计算出参数所给年月共包含多少天,根据这个值来构造一个循环。在这个循环中先求这个月的每一天与一个已知是星期天的日期(2001-12-30是星期天)的差,所得的差再对7求模。如果所求日期在2001-12-30以前,那么所得的差既是负数,求模后所得值范围为大于-6,小于0,如-1表示星期六,故先将求模的结果加7,再求7的模. 如过所得值不等于0和6(即不是星期六和星期天),则算一个工作日。
----------------------------------------------------------------------------------------*/
Result INTEGER := 0;
myts INTEGER; --所给年月的天数
scts INTEGER; --某天距2001-12-30所差的天数
rq DATE;
djt INTEGER := 1; --
BEGIN
myts := to_char(last_day(to_date(ny,'yyyymm')),'dd');
LOOP
rq := TO_date(ny||substr(100+djt,2),'yyyymmdd');
scts := rq - to_date('2001-12-30','yyyy-mm-dd');
IF MOD(MOD(scts,7)+7,7) NOT IN(0,6) THEN
Result := Result + 1;
END IF;
djt := djt + 1;
EXIT WHEN djt>myts;
END LOOP;
RETURN Result;
END Get_WorkingDays;
分享到:
相关推荐
在Oracle数据库中,进行时间和秒之间的转换是一种常见的需求,特别是在处理与特定时间点(例如1970-01-01)相关的日期和时间数据时。本文将详细介绍如何在Oracle中实现当前时间与毫秒之间的转换,并提供具体的示例...
在Oracle数据库中,时间区间段的合并是一项常见的需求,特别是在数据分析、日志处理或资源调度等领域。本问题涉及的PDF文档“Oracle时间区间段合并.pdf”似乎提供了关于如何使用SQL来实现这一功能的方法。以下是对这...
在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...
- 在触发器中执行长时间运行的操作。 - 调用其他数据库或者外部服务。 - 记录审计日志,确保日志记录不会因主事务回滚而丢失。 - 执行复杂的计算任务,如统计分析等。 #### 三、示例解析 在给定的示例中,我们看到...
在Oracle数据库管理与开发过程中,熟练掌握日期时间处理的相关函数是至关重要的。这部分内容主要涉及到了Oracle中的日期函数及其应用,例如`sysdate`、`add_months`等。 ##### 1. `sysdate`函数 `sysdate`函数返回...
以上是Oracle与MySQL在数据类型、常量声明、自增长数据类型、空字符处理、基本语法使用以及函数使用等方面的主要区别。这些差异对于从Oracle迁移到MySQL或反之亦然的项目至关重要,有助于确保数据的正确性和应用程序...
- Oracle 使用CONCAT进行字符串拼接,而在SQL Server中可以直接使用表达式相加的方式进行字符串拼接。 - **CHR, CHAR** - Oracle 提供了CHR和CHAR函数用于将ASCII码值转换为字符,而SQL Server没有对应的直接函数...
在Oracle数据库中,计算时间差通常涉及到日期和时间的运算,特别是当需要精确到毫秒级别时,操作就显得相对复杂。Oracle提供了多种函数来处理日期和时间数据,如TO_DATE和TO_TIMESTAMP,但它们的功能有限,无法直接...
她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle SQL,博客主页是karenmorton....
在Oracle中,可以通过将数字直接与`SYSDATE`相加来实现日期的增加。具体规则如下: - **增加秒数**:`SYSDate + (5 / 24 / 60 / 60)` 表示增加了5秒。 - **增加分钟数**:`SYSDate + (5 / 24 / 60)` 表示增加了5...
Oracle 中没有直接对应的函数,但可以通过 `CASE` 表达式实现。 2. **三角函数**: - **圆周率**:SQL Server 提供 `PI()` 函数,Oracle 中可能需要使用第三方库或自定义函数来获取。 - **正弦、余弦、正切**:...
这些日期运算在日常的数据处理和分析中非常常见,理解并熟练掌握这些函数和操作,能帮助我们在SQL查询中更高效地处理时间相关的逻辑。在Oracle中,日期运算的灵活性和强大功能使得开发者可以轻松处理各种复杂的日期...
1. **日期相加与减**: 在 Oracle 中,你可以通过 `+/-` 操作符或者 `ADD_MONTHS` 函数来增加或减少日期。SQL Server 使用 `DATEADD` 函数达到相同的目的,如 `DATEADD(day, 2, '2004-10-15')` 可以将日期增加两天。 ...
这些函数和表达式都是Oracle SQL处理日期操作的核心工具,它们可以帮助开发者在处理日期相关的业务逻辑时实现各种复杂的需求。在实际工作中,结合这些方法,我们可以方便地进行日期的计算、比较和转换,以满足报表、...
在Oracle中,时间处理涉及到多个函数,这些函数可以帮助我们进行日期和时间的加减运算、格式化以及获取特定日期信息等。 1. **加法操作**: - `ADD_MONTHS(date, months)`:这个函数将给定的日期加上指定的月数。...
Oracle 和 SQL Server 都是广泛使用的数据库管理系统,它们在处理日期和时间数据时提供了丰富的内置函数。下面是对这两个系统中日期函数的详细比较: 1. **日期相加/减**: - Oracle 使用 `ADD_MONTHS(date, ...
- **日期时间操作**:日期相加减、时间间隔计算等。 - **文本处理**:字符串连接、截取等。 ##### 2.4 任何Page相关问题 - **页眉页脚设置**:定义每页的页眉页脚信息。 - **分页规则**:设定何时进行分页,如何...
单行函数是在 Oracle 数据库中最常用的一类函数,它们的特点是每次只处理一行记录中的某个字段或表达式,并返回一个值。接下来我们将详细介绍几种常用的单行函数。 #### 三、字符函数 字符函数主要用来处理字符串...
要注意的是,PL/SQL中的空值(NULL)处理有特殊规则,如NULL与任何值相加都会保持为NULL,但与字符串连接则会将NULL转换为字符串形式。 PL/SQL提供了丰富的数据类型,包括Date、Boolean、Rowid、Char、Varchar2、Long...