【问题标题】:ORACLE get count time range from both dateORACLE 从两个日期获取计数时间范围
【发布时间】:2018-03-18 03:41:57
【问题描述】:

我正在使用 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
{
}

【问题讨论】:

    标签: sql oracle date select


    【解决方案1】:
    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;
    

    通常我使用 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)
        //..
    ?>
    

    【讨论】:

    • 这是完全不同的请求,你错过了 php 标签,而标题要求不同的问题
    • 对不起,我错过了
    • 已编辑,请更新本题标题并添加php标签
    • 嗨弗兰克,我需要使用 SYSDATE,当我将 2017-10-06 17:00 更改为 SYSDATE 时,它显示结果:-17627871.5
    • 可能是因为 sysdate
    【解决方案2】:

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

    SELECT 24 * (SYSDATE - LASTACTIVITY) diff_hours FROM WA_GA_TBL_USERS
    

    【讨论】:

    • 接下来我将使用 PHP 进行验证,我该怎么做? if($diff_hours > 1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多