select datediff(hour,'2007-09-29 16:01:07.637','2007-09-29 18:28:14.623')
执行这样的sql,出现“未找到要求的form字”,如果加上from pc_plan_limdate 
出现,“datediff标识符无效”
请问这是什么情况啊?谢谢各位了!

解决方案 »

  1.   

    select datediff(hour,'2007-09-29 16:01:07.637','2007-09-29 18:28:14.623')  from dual;
    dual是oracle模拟出来的一个虚表还有,oracle中没有datediff这个函数,要自己写
      

  2.   

    trunc()函数可进行时间加减
    在select中日期相减得出天数
    select trunc(sysdate)-trunc(hiredate) from emp where trunc(sysdate)-trunc(hiredate)>5000;
      

  3.   

    时间相减:
    select trunc(sysdate)-1 as 昨天 from dual
      

  4.   

    datediff 是sqlserver中的函数,oracle中没有
      

  5.   

    Oracle中没有datediff函数,楼上说得对这是SQL SERVER里面的select to_char(sysdate,'hh24') from dual;    --取日期的时
    select to_char(sysdate,'mi') from dual;    --取日期的分
    select to_char(sysdate,'ss') from dual;     --取日期的妙
    select to_char(sysdate,'yyyy') from dual;   ----取日期的年
    select to_char(sysdate,'mm') from dual;   ----取日期的月
    select to_char(sysdate,'dd') from dual;   ----取日期的日
      

  6.   

    楼主用的 sql server 时间函数在 oracle 中不适用
      

  7.   

    看楼主的需求似乎带毫秒,应该写下面这样的sql语句:
    select extract(hour from dt2-dt1) hour, 
           extract(minute  from dt2-dt1) minute,
           extract(second  from dt2-dt1) second
            from
    (SELECT   TO_TIMESTAMP ('2007-09-29 18:28:14.623', 'yyyy-MM-dd hh24:mi:ss.ff3') dt2,
           TO_TIMESTAMP ('2007-09-29 16:01:07.637', 'yyyy-MM-dd hh24:mi:ss.ff3') dt1
      FROM DUAL);
      

  8.   

    round(to_number(end-date-start_date))- 消逝的时间(以天为单位);round(to_number(end-date-start_date)*24)- 消逝的时间(以小时为单位);round(to_number(end-date-start_date)*1440)- 消逝的时间(以分钟为单位)。