pears.IQXNetStringToDate

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

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
  • database/functions/pears_iqxnetstringtodate.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1