select round((to_date(to_char(start_date,'yyyy-mm-dd')||' '||to_char(start_time,'hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')-to_date(to_char(end_date,'yyyy-mm-dd')||' '||to_char(end_time,'hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*60)

解决方案 »

  1.   

    select 
      round(to_date(start_date||' '||start_time,'yyyy-mm-dd hh24:mi:ss')-  to_date(end_date||' '||end_time,'yyyy-mm-dd hh24:mi:ss'))*60
    from tab;
      

  2.   

    select round((to_date(to_char(end_date,'yyyy-mm-dd')||' '||to_char(end_time,'hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')-to_date(to_char(start_date,'yyyy-mm-dd')||' '||to_char(start_time,'hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*60)
    from table name
    where ......
      

  3.   

    如果你的数据都是用字符串存储的,那可以把两个串拼接成一个串然后转换成时间类型的数据进行运算:select 
      (to_date(trim(start_date)||trim(start_time),'YYYY-MM-DDHH24:MI:SS') 
       - to_date(trim(end_date)||trim(end_time),'YYYY-MM-DDHH24:MI:SS')) 
    from table_name;这样计算出来的结果是以天为单位的一个小数,如果你要进行小时,分钟的转换,自己在后面作相应的处理就可以了