PL/SQL时间段计算
Posted
技术标签:
【中文标题】PL/SQL时间段计算【英文标题】:PL/SQL time segment calculation 【发布时间】:2010-05-05 19:37:54 【问题描述】:我需要计算两次之间经过了多少时间。例如:
(14:00:00 - 13:15:00) * 24 = .75
我需要这个稍后将 KW 转换为 KWh,但这不是重点。
我不知道如何在 PL/SQL 中执行此操作。
我的日期/时间字段在 DB 中如下所示:
2010 年 1 月 23 日 21:00:00
如果有任何建议,我将不胜感激。
史蒂夫
【问题讨论】:
您使用的是哪个版本的 Oracle?询问的原因是在 9i 中添加了内置功能,应该能够使这更容易 【参考方案1】:如果您使用的是上面的 9i,这会给您带来预期的结果吗?
select extract(hour from numtodsinterval(to_date('14:00:00','HH24:MI:SS') - to_date('13:15:00','HH24:MI:SS'),'DAY'))
||':'|| extract(minute from numtodsinterval(to_date('14:00:00','HH24:MI:SS') - to_date('13:15:00','HH24:MI:SS'),'DAY')) diff
from dual
/
DIFF
------------------
0:45
摘录详细here
和numtodsinterval详细here
【讨论】:
非常感谢您提供的快速解决方案。现在我正在努力解决我认为自己的数据问题。我收到此错误:“ORA-01858:在预期数字的地方发现了一个非数字字符”- dateTime 字段如下所示:8/12/2009 14:29:59 - 我不明白 很高兴我能帮上忙 - 而不是 to_date('14:00:00','HH24:MI:SS') 如何使用 to_date('8/12/2009 14:29:59' , 'MM/DD/YYYY HH24:MI:SS') 我不知道我的月份 (MM) 和日期 (DD) 是否在正确的位置,但你应该可以交换这些 再次感谢,我这样做了,但奇怪的是,如果我将日期/时间硬编码到它工作的函数中,当我从表中获取它时,我得到了那个错误。日期是从表里抄来的,怎么可能……反正你已经帮了我这么大的忙了。再次感谢您。 如果你运行这个查询:select value from nls_session_parameters where parameter = 'NLS_DATE_FORMAT' 你得到什么日期格式?如果它与您的期望不同并且数据库设置尝试使用 ALTER SESSION SET NLS_DATE_FORMAT='YOUR DATE FORMAT' 我没有蟾蜍,所以如果你在 sql 中运行这个命令,你会得到什么?显示参数 nls_date_format以上是关于PL/SQL时间段计算的主要内容,如果未能解决你的问题,请参考以下文章