Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PL/SQL时间段计算_Sql_Oracle_Stored Procedures_Plsql_Toad - Fatal编程技术网

PL/SQL时间段计算

PL/SQL时间段计算,sql,oracle,stored-procedures,plsql,toad,Sql,Oracle,Stored Procedures,Plsql,Toad,我需要计算两次之间经过了多少时间。例如: (14:00:00-13:15:00)*24=.75 稍后我需要将千瓦转换成千瓦时,但这不是重点 我不知道如何在PL/SQL中实现这一点 我的日期/时间字段在数据库中如下所示: 2010年1月23日21:00:00 如果有任何建议,我将不胜感激 Steve如果您使用的是上面的9i,这是否会给您带来预期的结果 select extract(hour from numtodsinterval(to_date('14:00:00','HH24:MI:SS')

我需要计算两次之间经过了多少时间。例如:

(14:00:00-13:15:00)*24=.75

稍后我需要将千瓦转换成千瓦时,但这不是重点

我不知道如何在PL/SQL中实现这一点

我的日期/时间字段在数据库中如下所示:

2010年1月23日21:00:00

如果有任何建议,我将不胜感激


Steve

如果您使用的是上面的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
摘录很详细


numtodsinterval的详细信息

您使用的是Oracle的哪个版本?问这个问题的原因是,内置功能是在9i上添加的,应该能够使这更容易。非常感谢您提供的快速解决方案。我想现在我正在为自己的数据而挣扎。我得到了这个错误:“ORA-01858:在需要数字的地方发现了一个非数字字符”-日期时间字段看起来像这样:8/12/2009 14:29:59-我不明白,很高兴我能帮忙-而不是to_date('14:00:00','HH24:MI:SS')使用to_date('8/12/2009 14:29:59','MM/DD/yyyyyyy h24:MI:SS')怎么样我不知道我是否把月(MM)和日(DD)放在了正确的位置,但你应该能够再次交换这些感谢,我只是这样做了,但奇怪的是,如果我把日期/时间硬编码到它工作的函数中,当我从表中得到它时,我得到了那个错误。日期是从表上抄下来的,怎么可能……不管怎样,你已经帮了我这么多了。再次感谢。如果运行此查询:请从nls\U会话\U参数中选择值,其中参数='nls\U日期\U格式'返回的日期格式是什么?如果它与您期望的和数据库设置不同,请尝试使用ALTER SESSION SET NLS_DATE_FORMAT='YOUR DATE FORMAT'我没有toad,那么如果在sql plus中运行此命令,您会得到什么?显示参数nls\u日期\u格式