日期:2014-05-17  浏览次数:21121 次

oracle中,如何把数字型日期,转成汉字的。
如题,举例如下:
2008-03-30转成 二OO八年三月三十日
谢谢

------解决方案--------------------
SQL> create or replace type T_CHAR_ARR is table of varchar2(20);
2 /

SQL> create or replace function to_chdate(v_date date) return varchar2
2 is
3 v_return varchar2(60);
4 v_year varchar(30);
5 v_month varchar(15);
6 v_day varchar(15);
7 v_numarry1 T_CHAR_ARR ;
8 v_numarry2 T_CHAR_ARR ;
9 begin
 10 v_numarry1 := T_CHAR_ARR('零','一','二','三','四','五','六','七','八','九');
 11 v_numarry2 := T_CHAR_ARR('一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一');
 12 v_year := to_char(v_date, 'yyyy');
 13 v_month := to_char(v_date, 'mm');
 14 v_day := to_char(v_date, 'dd');
 15 v_month := v_numarry2(to_number(v_month));
 16 v_day := v_numarry2(to_number(v_day));
 17
 18 for ind in 1..length(v_year) loop
 19 v_return := v_return || v_numarry1(to_number(substr(v_year, ind, 1))+1);
 20 end loop;
 21 v_return := v_return || '年' || v_month || '月' || v_day || '日';
 22 return v_return;
 23 end;
 24 /
 
Function created


SQL> select to_chdate(sysdate) from dual;
 
TO_CHDATE(SYSDATE)
--------------------------------------------
二零零九年八月六日
 
一个笨方法。