SET TERM ^ ;

CREATE OR ALTER function FN_DATE_HUMANIZE (
    DATA date,
    TIPO integer)
returns varchar(50)
AS
declare variable ANO varchar(10);
declare variable MES varchar(10);
declare variable DIA varchar(10);
declare variable RES varchar(50);
begin

  DIA = extract(day from DATA);
  MES = extract(month from DATA);
  ANO = extract(year  from DATA);

  IF(TIPO = 1)THEN
  BEGIN
    MES = trim(IIF(MES = 1,'Jan',
          IIF(MES = 2,'Fev',
          IIF(MES = 3,'Mar',
          IIF(MES = 4,'Abr',
          IIF(MES = 5,'Mai',
          IIF(MES = 6,'Jun',
          IIF(MES = 7,'Jul',
          IIF(MES = 8,'Ago',
          IIF(MES = 9,'Set',
          IIF(MES =10,'Out',
          IIF(MES =11,'Nov',
          IIF(MES =12,'Dez','')))))))))))));

          RES = MES||'/'|| (cast(ANO as integer) - 2000);
  END

  IF(TIPO = 2 or TIPO = 3)THEN
  BEGIN
    MES =trim(IIF(MES = 1,'Janeiro',
          IIF(MES = 2,'Fevereiro',
          IIF(MES = 3,'Março',
          IIF(MES = 4,'Abril',
          IIF(MES = 5,'Maio',
          IIF(MES = 6,'Junho',
          IIF(MES = 7,'Julho',
          IIF(MES = 8,'Agosto',
          IIF(MES = 9,'Setembro',
          IIF(MES =10,'Outubro',
          IIF(MES =11,'Novembro',
          IIF(MES =12,'Dezembro','')))))))))))));

          IF(TIPO = 2)THEN
          BEGIN
            RES = MES||'/'||ANO;
          END ELSE
          BEGIN
            RES = lpad(DIA,2,'0')||' de '||MES||' de '||ANO;
          END
  END

  return trim(RES);
end
^

SET TERM ; ^

