娇娱网
您的当前位置:首页pl/sql获取工作时间(很实用的)

pl/sql获取工作时间(很实用的)

来源:娇娱网


很实用的获取工作时间 无 create or replace function FUN_GET_WORKTIME(PARAM_DATE IN DATE) return NUMBERisnum_worktime number:= 8;--工作总时长num_mi number:= 60;--60分钟num_ss number:= 60;--60秒num_work_begin number:= 8/24 + 30/(24*60);--8:30n

很实用的获取工作时间
<无> $velocityCount-->
create or replace function FUN_GET_WORKTIME(PARAM_DATE IN DATE) return NUMBER
is
num_worktime number:= 8;--工作总时长
num_mi number:= 60;--60分钟
num_ss number:= 60;--60秒
num_work_begin number:= 8/24 + 30/(24*60);--8:30
num_noon_begin number:= 11/24 + 30/(24*60);--11:30
num_noon_end number:= 12/24;--12:00
num_work_end number:= 17/24;--17:00
num_time number;--时间
num_return number;--返回值
d_init date := to_date('1988-08-08 00:00:00','YYYY-MM-DD hh24:mi:ss'); --初始日期
num_holi NUMBER;
num_holi_y NUMBER;
BEGIN
 --查询节假日表holiday
 select count(1) into num_holi from holiday h where h.holi_day < to_char(PARAM_DATE, 'YYYY-MM-DD');
 select count(1) into num_holi_y from holiday h where h.holi_day = to_char(PARAM_DATE, 'YYYY-MM-DD');
 num_return := floor(PARAM_DATE - d_init - num_holi);
 --判断当天是否为节假日
 if(num_holi_y >= 1) then
 num_return := num_return + 0;
 else
 num_time := PARAM_DATE - to_date(to_char(PARAM_DATE,'YYYY-MM-DD')||' 00:00:00','YYYY-MM-DD hh24:mi:ss');
 --时间在8:30以前至0
 if(num_time<=num_work_begin) then
 num_return := num_return + 0;
 end if;
 --时间在8:30到11:30之间
 if(num_time > num_work_begin and num_time < num_noon_begin) then
 num_return := num_return + (num_time - num_work_begin);
 end if;
 --时间在11:30到12:00之间 
 if(num_time > num_noon_begin and num_time<=num_noon_end) then
 num_return := num_return + (num_noon_begin-num_work_begin);
 end if;
 --时间在12:00到17:00之间
 if(num_time > num_noon_end and num_time<=num_work_end) then
 num_return := num_return + (num_time - num_work_begin - (num_noon_end - num_noon_begin));
 end if; 
 --时间大于17:00
 if(num_time > num_work_end ) then
 num_return := num_return + (num_work_end - num_work_begin - (num_noon_end - num_noon_begin));
 end if; 
 
 
 end if;
 num_return := num_return * num_worktime * num_mi * num_ss;
return (num_return);
end FUN_GET_WORKTIME;

娇娱网还为您提供以下相关内容希望对您有帮助:

oracle获取当前日期上一工作日

在Oracle中,可以通过编写SQL查询或PL/SQL过程来获取当前日期的上一个工作日。具体方法如下:使用SQL查询:可以通过组合使用SYSDATE、TO_CHAR、CASE等函数和逻辑判断来构造查询。首先,使用TO_CHAR(SYSDATE, 'D')获取当前日期是星期几('D'返回1表示星期日,7表示星期六,其他数字表示星期一到星期五)。然后,

PL/SQL获取当前日期减7天的内容

1、首先打开PL/SQL Developer窗口,新建SQL WINDOW窗口,在新建的SQL窗口中输入一行代码。2、在菜单中选择Configure-&gt;Preferences,弹出参数配置窗口。3、然后按下图所示,选择User Interface-&gt;Fonts-&gt;Editor-&gt;Select,弹出字体设置窗口。4、调整编辑器对应的字体类型、字体大小等信息,设置完成后点击确定。5、...

pl-sql中select*fromdual这个dual是什么

PL/SQL中的dual是一个特殊的单行单列表。解释:在PL/SQL中,`dual` 是一个特殊的一行、一列的表。其主要用途是为了进行不涉及任何实际表的查询操作。当执行某些操作,如获取当前日期和时间、进行数学计算或执行某些函数时,如果没有实际的表数据作为操作对象,就可以使用 `dual` 表。这是因为即使在...

如何获取Oracle数据库中sql语句的执行时间

通过Oracle执行计划可以看到SQL的执行时间。EXPLAIN PLAN FOR SELECT * FROM table;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);SQL&gt;set timing on --显示执行时间 SQL&gt;set autorace on ?C显示执行计划 SQL&gt;set autorace on ?C显示执行计划 SQL&gt;set autotrace traceonly ?C只显示执行计划即不显示查询出...

pl/SQL 查询 时间显示问题

如下操作可以更改显示格式:TOOLS(工具)——&gt;Preferences(选择参数)——&gt;User interface(用户接口)——&gt;Date/Time 即可以设置日期显示格式。

PL/SQL Developer中复制一个表到另外一个数据库

在PL/SQL Developer中复制一个表到另外一个数据库,可以按照以下步骤操作:准备工作:确保已安装Oracle11g和PL/SQL Developer,并拥有源数据库和目标数据库的登录权限。导出表结构和数据:打开PL/SQL Developer,登录到源数据库。依次点击【工具】——【导出表】。在弹出的界面中选择包含目标表的用户,列出...

如何使用pl/sql developer

使用PL/SQL Developer的步骤如下:一、安装与基础配置安装软件:在本地计算机安装PL/SQL Developer客户端工具。完成基础配置:包括Oracle客户端路径、OCI库设置等(具体配置细节需根据系统环境调整)。二、建立数据库连接输入登录信息:用户名/密码:输入具有访问权限的Oracle数据库账号。Database:从下拉列表...

如何使用PL/SQL工具将oracle数据导出到excel

在使用Oracle数据库时,PL/SQL是最为得力的工具之一。通过PL/SQL,我们可以更便捷地操作Oracle数据库。本文将介绍如何使用PL/SQL工具将Oracle中的数据导出到Excel文件中。首先,需要在SQL Window窗口中执行查询语句,以获取需要导出的数据。注意,这里只关注查询结果集,而不要选中任何具体的行或单元格。接...

PL/SQL是什么软件 PL/SQL最新版本功能介绍

可以固定结果集,防止被清除,这对于长时间运行的查询特别有用。可以查看结果集修改的SQL文本,方便追踪数据变化。自动刷新图形,可以导出列数据到文件,增加了结果集的可操作性和可视化。新增DBMS输出标签页 可以在SQL窗口、命令窗口、测试窗口和调试窗口中查看DBMS_OUTPUT的输出。这对于调试和测试PL/SQL程序...

oracle job 时间每五分钟执行怎么写

1、job参数是输出参数,由submit()过程返回的binary_ineger,这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs视图查询job值。2、what参数是将被执行的PL/SQL代码块,存储过程名称等。3、next_date参数指识何时将运行这个工作。4、interval参数何时这个工作将被重执行。5、no_parse...

显示全文

猜你还关注