如何使用日期,小时和分钟来计算甲骨文表单中的总时间



需要帮助!

我正在研究Oracle Forms 10G。我创建了一个表格,其中有7个字段:

第一个3个字段,即 from_date的日期格式, from_hourfrom_minute的数字格式。接下来3个字段接受to_dateto_hourto_minute

From_hourto_hour以24HH格式接受。

和最后一个字段是total_time,它通过计算从字段到字段的差异来显示 hh.mm 格式中的结果。

我无法完成。高度赞赏任何类型的帮助。

谢谢!

不良设计。您应该只有一个项目和价值的一项,可以接受完整的日期时间格式。我建议您解决这个问题。

同时,将这些对转换为真实的日期格式;使用适合您情况的格式面膜。这是一个例子:

declare
  l_from date := to_date(to_char(:from_date, 'dd.mm.yyyy') ||' '||
                         lpad(:from_hour, 2, '0')          ||':'||
                         lpad(:from_minute, 2, '0'),
                         'dd.mm.yyyy hh24:mi');
  l_to   date := the same, just for TO values
  l_diff number;
begin
  l_diff := l_to - l_from;   -- it is number of DAYS
  ...
end;

作为l_diff表示两个日期之间的天数(因为减去它们时您得到的是什么(,现在您必须将其转换为小时(通过将其乘以24,因为一天有24小时(,虽然几分钟您需要用60个乘以(一个小时内有60分钟(。

以下是如何做到这一点的示例:假设差异差不多是0.3天。然后是

SQL> with test as (select 0.3 days from dual)
  2  select trunc(days * 24)                      as hours,
  3         ((days * 24) - trunc(days * 24)) * 60 as minutes
  4  from test;
     HOURS    MINUTES
---------- ----------
         7         12

形式,那将是

declare 
  l_hours   number;
  l_minutes number;
  l_total   varchar2(10);
begin
  l_hours   := trunc(l_diff * 24);
  l_minutes := ((l_diff * 24) - trunc(l_diff * 24)) * 60;
  l_total   := lpad(to_char(l_hours), 2, '0') ||':'|| 
               lpad(to_char(l_minutes), 2, '0');
end;

这两个PL/SQL块当然只有一个(即一个声明部分,一个开始 - 末端块(。

最新更新