求一存储过程或函数
   已知:
    传入的字符串为:‘2009-01-01,2009-01-02,2009-12-13,2009-12-14,2009-12-5,2009-12-6,2009-12-7’
   要求输出每个日期为当年的第几天天数:
     例如:2009-01-01 为2009年的第1天,2009-01-02 为2009年的第2天。
       。。
   现在项目时间紧,急需各位高手们帮忙解决下!谢谢!

解决方案 »

  1.   

    --字符串中的时间格式固定为yyyy-mm-dd 即10位
    --年份默认2009年
    create or replace procedure pro(str in varchar) is
    a int;
    str1 varchar2(20);
    b int;
    c date :=to_date('2009-01-01','yyyy-mm-dd');
    begin
      a :=length(str) +1;
      for i in 0..(a/11-1) loop
          str1:=SUBSTR(str,i*11+1,10);
          b :=to_date(str1,'yyyy-mm-dd')-c +1;
          dbms_output.put_line(str1 || '为20009年的第' || b ||'天');
      end loop;
    end pro;
      

  2.   

    SQL> exec pro('2009-01-01,2009-01-02,2009-12-13,2009-12-14,2009-12-05,2009-12-06,2009-12-07');
     
    2009-01-01为20009年的第1天
    2009-01-02为20009年的第2天
    2009-12-13为20009年的第347天
    2009-12-14为20009年的第348天
    2009-12-05为20009年的第339天
    2009-12-06为20009年的第340天
    2009-12-07为20009年的第341天
     
    PL/SQL procedure successfully completed