====== 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