ORACLE从两个日期获得计数时间范围

时间:2017-10-06 10:42:41

标签: sql oracle date select

我正在使用ORACLE,如何从下面的日期获得持续时间:

SELECT 24 * (TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI') - TO_CHAR(LASTACTIVITY, 'YYYY-MM-DD HH24:MI')) diff_hours 
FROM WA_GA_TBL_USERS

我收到了错误:

ORA-01722: invalid number

我想要的是从两个日期获得计数时间范围。

示例:

SYSDATE = 2017-10-06 17:00
LASTACTIVITY = 2017-10-06 15:30

结果是:1.5

接下来我将用PHP验证它

if($timeduration > 1) //1 means 1 hour
{
}

2 个答案:

答案 0 :(得分:0)

您已经有日期表达式,您无需将它们转换为varchars:

SELECT 24 * (SYSDATE - LASTACTIVITY) diff_hours FROM WA_GA_TBL_USERS

答案 1 :(得分:0)

select
    24 * (to_date('2017-10-06 17:00', 'YYYY-MM-DD hh24:mi') - to_date('2017-10-06 15:30', 'YYYY-MM-DD hh24:mi')) as diff_hours
from dual;

enter image description here

通常我使用php和mysql,但我不认为语义是不同的,我没有尝试下面的代码,但可以帮助你:

<?php
$c = oci_pconnect(...);
$s = oci_parse($c, "select 24 * (to_date('2017-10-06 17:00', 'YYYY-MM-DD hh24:mi') - to_date('2017-10-06 15:30', 'YYYY-MM-DD hh24:mi')) as diff_hours from dual");
oci_execute($s);
$res=oci_fetch_array($s);

if($res >1)
    //..
?>
相关问题