oracle中写一个西历和和历之间转换的PL/SQL的函数
(2006-07-07 17:13:20)
/*
** DATE型で受け取った日付をVARCHAR2型で和暦編集する
**
明治・大正・昭和・平成に対応
** 1868年9月7日以前は未対応(RETURN NULL)
*/
CREATE OR REPLACE FUNCTION JPDATE (INDATE DATE)
RETURN VARCHAR2
IS
OUTDATE CHAR(20);
YMD VARCHAR2(8);
YY VARCHAR2(4);
MM VARCHAR2(2);
DD VARCHAR2(2);
NENGO VARCHAR2(4);
BEGIN
YMD := TO_CHAR(INDATE,'YYYYMMDD');
YY := SUBSTR(YMD,1,4);
-- IF (YMD < '18680901') THEN --* 18680907まで暦は慶応
IF (YMD < '18680908') THEN
NENGO := NULL;
ELSE IF (YMD < '19120731') THEN
YY := TO_CHAR(TO_NUMBER(YY) - 1867);
NENGO := '明治';
ELSE IF (YMD < '19261226') THEN
YY := TO_CHAR(TO_NUMBER(YY) - 1911);
NENGO := '大正';
ELSE IF (YMD < '19890108') THEN
YY := TO_CHAR(TO_NUMBER(YY) - 1925);
NENGO := '昭和';
ELSE
YY := TO_CHAR(TO_NUMBER(YY) - 1988);
NENGO := '平成';
END IF;
END IF;
END IF;
END IF;
IF LENGTH(RTRIM(YY)) < 2 THEN
YY := '0' || YY;
END IF;
MM := SUBSTR(YMD,5,2);
DD := SUBSTR(YMD,7,2);
OUTDATE := NENGO || YY || '年' || MM || '月' || DD || '日';
RETURN(OUTDATE);
EXCEPTION
WHEN OTHERS THEN
NULL;
END JPDATE;
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。