select to_char((sysdate - start_date),'yyyymmdd hh24:mi:ss') start_time from agent_stats;

解决方案 »

  1.   

    select sysdate - start_date from agent_stats;
      

  2.   

    楼上说得对
    这样得到的是间隔多少秒
    (sysdate - start_date ) * 24 * 60 * 60
    要得到你需要的格式
    你需要进行计算转换
    查一下那个函数取整函数
    我这儿没有环境及帮助
      

  3.   

    1楼,你应该测试一下,你那么写不行的SQL>  select to_char((sysdate - start_date),'yyyymmdd hh24:mi:ss') start_time from agent_stats;
     select to_char((sysdate - start_date),'yyyymmdd hh24:mi:ss') start_time from agent_stats
                                           *
    错误位于第1行:
    ORA-01481: 无效的数字格式模型3楼:我知道这么写不会错,但是得不到我需要的输出格式,因为出来的是一个小数2楼,4楼:你们写过这样的语句吗?
    因为3楼那么写得出的结果是比较精确的,照理说,应该能把它按格式输出的呀。
    需要什么函数吗?我查了半天帮助也不得其法。各位谁写过这样的句子,帮帮忙了!拜托~
      

  4.   

    select numtodsinterval(sysdate - start_date,'day') from dual;
      

  5.   

    楼上:
    SQL> select numtodsinterval(sysdate - start_date,'day') from agent_stats;
    select numtodsinterval(sysdate - start_date,'day') from agent_stats
           *
    错误位于第1行:
    ORA-00904: 无效列名
    numtodsinterval这个是谁提供的函数啊?不会是笔误吧?
      

  6.   

    我只用过dayafter()函数搞定
      

  7.   

    如果你想得到sysdate和start_date相差几时几分几秒,可试试以下语句(但时间不能超过24小时,否则截位):
    select to_char(to_date('2003','yyyy')+(sysdate-start_date),'hh24:mi:ss') start_time from agent_stats;
    不知可否
      

  8.   

    楼上,这么做不行,因为sysdate-start_date得出的是一个浮点数,当使用后面的格式时,就会出错的,我不明白你为什么要在前面加上to_date('2003','yyyy'),我要的就是时间差啊。
    上面是我的理解,可是把你的语句运行一下却出现了我想不到的结果,
    下面是你写的语句的运行结果:
    SQL> select to_char(to_date('2003','yyyy')+(sysdate-start_date),'hh24:mi:ss')
      2  start_time from agent_stats;START_TI
    --------
    12:02:4912:02:49 就是当前时间,为什么会得出当前时间呢????
    高手指点一下吧!
      

  9.   

    to_date('2003','yyyy')是取2003年1月1日0点的值,
    sysdate-start_date是两个日期相差的天数,
    那么to_date('2003','yyyy')+(sysdate-start_date)
    就是指从2003年1月1日0点经过的天数,
    因为是从0开始的,所以也就将(sysdate-start_date)
    表现在日期里了,
    但是值(sysdate-start_date)不能为负,也不能超过24,
    否则to_char(to_date('2003','yyyy')+(sysdate-start_date),'hh24:mi:ss')
    就得不到正确结果。