pears.IQXNetStringToDate
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
CREATE FUNCTION "pears"."IQXNetStringToDate"( /* Application Maintained Function / Procedure - DO NOT EDIT*/ IN "sdate" CHAR(20) ) RETURNS DATE BEGIN DECLARE "rv" DATE; DECLARE "i" SMALLINT; DECLARE "d" SMALLINT; DECLARE "m" SMALLINT; DECLARE "y" SMALLINT; SET "sdate" = "trim"("sdate"); IF "sdate" REGEXP '^\\d{4}\\-.*' THEN -- ISO format SET "y" = CAST("left"("sdate",4) AS SMALLINT); SET "sdate" = "stuff"("sdate",1,5,''); SET "i" = "charindex"('-',"sdate"); IF "i" <= 1 THEN RETURN NULL END IF; SET "m" = CAST("left"("sdate","i"-1) AS SMALLINT); SET "sdate" = "stuff"("sdate",1,"i",''); SET "d" = CAST("sdate" AS SMALLINT) ELSE -- UK format with optional preceding day name SET "i" = "charindex"(' ',"sdate"); IF "i" > 0 THEN -- Day name to be removed before parsing date SET "sdate" = "trim"("stuff"("sdate",1,"i",'')) END IF; SET "i" = "charindex"('/',"sdate"); IF "i" <= 1 THEN RETURN NULL END IF; SET "d" = CAST("left"("sdate","i"-1) AS SMALLINT); SET "sdate" = "stuff"("sdate",1,"i",''); SET "i" = "charindex"('/',"sdate"); IF "i" <= 1 THEN RETURN NULL END IF; SET "m" = CAST("left"("sdate","i"-1) AS SMALLINT); SET "sdate" = "stuff"("sdate",1,"i",''); SET "y" = CAST("sdate" AS SMALLINT) END IF; RETURN "ymd"("y","m","d") exception WHEN others THEN RETURN NULL END