oracle的日期格式转换函数function

CREATE OR REPLACE FUNCTION F_IRT_DATE_YYYYMMDD(ENTER VARCHAR2)

/****
*生效日期的格式为YYYYMMDD,输入日期格式为:16-JUL-15( 日期-月份-年)
*例如:20151231
*
*
****/
RETURN VARCHAR2 IS
NIENDATE DATE;
NUM VARCHAR2(3);
INPUT_CHAR VARCHAR2(32) := ENTER;
BEGIN
/*
JAN-01
FEB-02
MAR-03
APR-04
MAY-05
JUN-06
JUL-07
AUG-08
SEP-09
OCT-10
NOV-11
DEC-12
*/

SELECT SUBSTR(INPUT_CHAR,4,3) INTO NUM FROM DUAL;
IF NUM = 'JAN' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'01'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'FEB' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'02'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'MAR' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'03'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'APR' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'04'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'MAY' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'05'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'JUN' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'06'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'JUL' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'07'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'AUG' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'08'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'SEP' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'09'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'OCT' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'10'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'NOV' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'11'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
ELSIF NUM = 'DEC' THEN
NIENDATE := TO_DATE('20'||SUBSTR(INPUT_CHAR,8,2)||'12'||SUBSTR(INPUT_CHAR,1,2),'YYYYMMDD');
END IF;
RETURN(NIENDATE);


END F_IRT_DATE_YYYYMMDD;

原文地址:https://www.cnblogs.com/qadyyj/p/5416065.html