在oracle9i中,
select sdt,edt from t1出现的结果是
2009-03-13,15 2009-03-13,15,30
我要得到的结果是
2009-03-13 15:00-16:00,2009-03-13 15:30-16:00
前者是以小时间隔,后者是以半小时间隔。
请问怎么写?解决立马给分

解决方案 »

  1.   

    SQL> select * from t;
     
    SDT                  EDT
    -------------------- --------------------
    2009-03-13,15        2009-03-13,15,30
     
    SQL> 
    SQL> select to_char(to_date(replace(sdt, ',', ''), 'yyyy-mm-ddhh24'),
      2                 'yyyy-mm-dd hh24:mi') || '-' ||
      3         to_char(to_date(replace(sdt, ',', ''), 'yyyy-mm-ddhh24') + 1 / 24,
      4                 'hh24:mi'),
      5         to_char(to_date(replace(edt, ',', ''), 'yyyy-mm-ddhh24mi'),
      6                 'yyyy-mm-dd hh24:mi') || '-' ||
      7         to_char(to_date(replace(edt, ',', ''), 'yyyy-mm-ddhh24mi') + 1 / 48,
      8                 'hh24:mi')
      9    from t;
     
    TO_CHAR(TO_DATE(REPLACE(SDT,', TO_CHAR(TO_DATE(REPLACE(EDT,',
    ------------------------------ ------------------------------
    2009-03-13 15:00-16:00         2009-03-13 15:30-16:00
      

  2.   

    SELECT 
    to_char(TO_DATE(sdt,'YYYY-MM-DD,HH24'),'yyyy-mm-dd hh24:mi') || '--' 
     || to_char(TO_DATE(std,'YYYY-MM-DD,HH24') + 1 / 24,'hh24:mi') std,
    to_char(TO_DATE(edt,'YYYY-MM-DD,HH24'),'yyyy-mm-dd hh24:mi') || '--' 
     || to_char(TO_DATE(etd,'YYYY-MM-DD,HH24') + 1 /2 / 24,'hh24:mi') etd
      FROM t1;
      

  3.   

    汗一个,题目中的case when在哪儿呢
      

  4.   

    sdt和edt没有必然联系的,一楼正解