Update Function CYMD2DATE
This commit is contained in:
@@ -1 +1,52 @@
|
|||||||
簀紂ラチ翳@リ粨<EFBFBD>kリ粨糘k粨籏ルヨテk粨篷ツヤチトヤkリ翡ヤラ@^@
|
SET PATH "QSYS","QSYS2","SYSPROC","SYSIBMADM","QTEMP" ;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION CISTOOLS.CYMD2DATE (
|
||||||
|
CYMD_DATE NUMERIC(7, 0) DEFAULT 0 )
|
||||||
|
RETURNS DATE
|
||||||
|
LANGUAGE SQL
|
||||||
|
SPECIFIC CISTOOLS.CYMD2DATE
|
||||||
|
NOT DETERMINISTIC
|
||||||
|
MODIFIES SQL DATA
|
||||||
|
CALLED ON NULL INPUT
|
||||||
|
SET OPTION ALWBLK = *ALLREAD ,
|
||||||
|
ALWCPYDTA = *OPTIMIZE ,
|
||||||
|
COMMIT = *NONE ,
|
||||||
|
DBGVIEW = *SOURCE ,
|
||||||
|
DECRESULT = (31, 31, 00) ,
|
||||||
|
DFTRDBCOL = QTEMP ,
|
||||||
|
DYNDFTCOL = *NO ,
|
||||||
|
DYNUSRPRF = *USER ,
|
||||||
|
SRTSEQ = *HEX
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHAR_DATE CHAR ( 8 ) ;
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION RETURN NULL ;
|
||||||
|
SET CHAR_DATE =
|
||||||
|
CASE
|
||||||
|
WHEN
|
||||||
|
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) = '0'
|
||||||
|
THEN '19' || RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
|
||||||
|
WHEN
|
||||||
|
LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 2 ) >= '1'
|
||||||
|
THEN
|
||||||
|
( INT ( LEFT ( LPAD ( CYMD_DATE , 7 , '0' ) , 1 ) ) + 19 ) ||
|
||||||
|
RIGHT ( LPAD ( CYMD_DATE , 7 , '0' ) , 6 )
|
||||||
|
END ;
|
||||||
|
-- TO_DATE will validate the date and throw exception if invalid
|
||||||
|
-- Exception handler will catch and return NULL
|
||||||
|
RETURN TO_DATE ( CHAR_DATE , 'YYYYMMDD' ) ;
|
||||||
|
END ;
|
||||||
|
|
||||||
|
COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||||
|
( CYMD_DATE IS 'CYMD Date Format' ) ;
|
||||||
|
|
||||||
|
LABEL ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||||
|
IS 'Cymd To Date' ;
|
||||||
|
|
||||||
|
GRANT ALTER , EXECUTE
|
||||||
|
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||||
|
TO AMAPICS WITH GRANT OPTION ;
|
||||||
|
|
||||||
|
GRANT EXECUTE
|
||||||
|
ON SPECIFIC FUNCTION CISTOOLS.CYMD2DATE
|
||||||
|
TO PUBLIC ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user