oracle - Oracle Reports 中的日期计算
问题描述
我从( ) 中减去DATE_IN
( )。我希望答案是(小时.分钟),但它给了我正确的小时数而不是正确的分钟数。我究竟做错了什么?16-NOV-20 06:02 PM
DATE_OUT
17-NOV-20 03:23 PM
21.21
21.34
function TIME_CALCULATIONFormula return NUMBER is
begin
RETURN ROUND((((:DATE_OUT - :DATE_IN)*24)*60)/60,2);
end;
解决方案
该值正确为 0.34 小时 = 20.4 分钟。
如果你想返回小时作为单位和分钟作为小数,那么你可以使用:
function TIME_CALCULATIONFormula return NUMBER
is
diff INTERVAL DAY TO SECOND := (:DATE_OUT - :DATE_IN) DAY TO SECOND;
begin
RETURN EXTRACT( DAY FROM diff ) * 24
+ EXTRACT( HOUR FROM diff )
+ EXTRACT( MINUTE FROM diff ) / 100;
end;
或者
function TIME_CALCULATIONFormula return NUMBER
is
diff INTERVAL DAY TO SECOND := CAST(:DATE_OUT AS TIMESTAMP)
- CAST(:DATE_IN AS TIMESTAMP);
begin
RETURN EXTRACT( DAY FROM diff ) * 24
+ EXTRACT( HOUR FROM diff )
+ EXTRACT( MINUTE FROM diff ) / 100;
end;
或者
function TIME_CALCULATIONFormula return NUMBER
is
begin
RETURN TRUNC( ( :date_out - :date_in ) * 24 ) +
MOD( ( :date_out - :date_in ) * 24 * 60, 60 ) / 100;
end;
或者,如果您不打算在 24 小时内出现时差,并且希望数字尾随零:
function TIME_CALCULATIONFormula return VARCHAR2
is
begin
RETURN TO_CHAR( DATE '1900-01-01' + ( :date_out - :date_in ), 'HH24.MI' );
end;
db<>在这里摆弄
推荐阅读
- laravel - 根据最后一个元素的 where 条件获取所有父元素
- html - Navbar Hover DropDown Expand - Angular
- nuxt.js - 是否可以在没有“build”的情况下在“target:static”模式下使用“nuxt generate”命令更新数据(来自 API)?
- wkhtmltopdf - 使用 Wkhtmltopdf 打印制表符(错误:警告:未定义:0 类型错误:'[object EventConstructor]' is not a constructor)
- visual-studio-code - VS-Code 远程 SSH:无法设置套接字 - 其他客户端还可以吗?
- node.js - 如何在与nodejs服务器的本机反应中实现expo推送通知
- android - 如何在应用程序的另一部分访问由 onCreatePreferences() 创建的首选项?
- javascript - 如何在聊天应用程序中在另一条消息下方显示一条消息?
- algorithm - 覆盖所有路线的最短路径算法
- django - 在 Django 中创建文本编辑器