中文年齡函式

xypincle發表於2017-02-19

  1. create or replace function CHINESEAGE(BirthDate in date, NowDate in date) return string is
  2.       Result string(80); -- 返回值
  3.       MonthCount number(4,0); -- 出生的月份
  4.       DayCount number(6,0); -- 去除月份後的餘數(天)
  5. begin
  6.       -- 如果生日大於當前日期,則提示錯誤
  7.       if BirthDate > NowDate or BirthDate is null or NowDate is null Then
  8.             Result := '不詳';
  9.             return(Result);
  10.       end if;

  11.       -- 獲取出生多少個月餘多少天
  12.       SELECT trunc(Mon), trunc((Mon - trunc(Mon)) * 31)
  13.       INTO MonthCount,DayCount
  14.       FROM (SELECT months_between(NowDate, BirthDate) Mon FROM dual) V;

  15.       -- 如果出生60個月以上,年齡顯示為 ##歲
  16.       if MonthCount >= 60 then
  17.             Result := to_char(trunc(MonthCount/12))||'歲';

  18.       -- 如果出生12-59個月,年齡顯示為 ##歲##月
  19.       elsif MonthCount >= 12 then
  20.             Result := to_char(trunc(MonthCount/12))||'歲'||to_char(mod(MonthCount,12))||'月';

  21.       -- 如果出生1-11個月,年齡顯示為 ##月##天
  22.       elsif MonthCount >= 1 then
  23.             Result := to_char(MonthCount)||'月';
  24.             if DayCount >= 1 then
  25.                   Result := Result || to_char(DayCount) || '天';
  26.             end if;

  27.       -- 如果出生1天-1個月,年齡顯示為##天
  28.       elsif DayCount >= 1 then
  29.             Result := to_char(DayCount)||'天';

  30.       -- 如果出生不足1天,年齡顯示為1天
  31.       else
  32.             Result := '1天';

  33.       end if;

  34.       return(Result);
  35. end;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2133899/,如需轉載,請註明出處,否則將追究法律責任。

相關文章