項目的開發中需要用到一個查詢周的第一天日期的函數 搜索N久很難找到解決的方法 只要自己寫一個先用著 代碼如下 a_week格式為 'YYYYIW' 如 '200801'表示2008年的第一周
周使用IW方式計算 如果一年當中第52周別之後至當年的12月31日之間,還有大於或等於4天的話,則定為當年的第53周,否則剩余這些天數被歸為下一年的第1周
1 CREATE OR REPLACE FUNCTION f_week_to_date(a_week varchar2) RETURN CHAR IS 2 v_first_date char(10); 3 v_date_of_week number(1); 4 5 BEGIN 6 select to_char(to_date(substr(a_week, 1, 4) || '0101', 'yyyymmdd'), 'D') 7 into v_date_of_week 8 from dual; 9 v_date_of_week := v_date_of_week - 1; 10 if v_date_of_week <= 4 then 11 select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') + 12 SUBSTR(a_week, 5, 2) * 7 - 7 - v_date_of_week + 1, 13 'yyyy-mm-dd') 14 into v_first_date 15 from dual; 16 else 17 select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') + 18 SUBSTR(a_week, 5, 2) * 7 - v_date_of_week + 1, 19 'yyyy-mm-dd') 20 into v_first_date 21 from dual; 22 end if; 23 24 return v_first_date; 25 26 END;