[firebase-br] Validação de datas

Robson Catunda robson.catunda em gmail.com
Dom Jul 31 15:23:10 -03 2011


Montei esse código aqui. Tá em FB2.0 mas acho que funciona em qualquer
versão.
Quem precisar de um codigo em sql pra corrigir data pode utilizar.
Retorna a data passada se for válida ou a primeira data válida anterior.

CREATE OR ALTER PROCEDURE Proc_Data_certa (d varchar(8))
returns (data1 date)
as
declare variable d1 varchar(2);
declare variable m1 varchar(2);
declare variable a1 varchar(4);
declare variable x integer;
begin
  a1=substring(:d from 5 for 4);
  m1=substring(:d from 3 for 2);
  d1=substring(:d from 1 for 2);
  x=cast(:a1 as integer);
  if (cast(:m1 as integer)<1) then m1='01';
  if (cast(:m1 as integer)>12) then m1='01';
  if (:m1 in ('01','03','05','07','08','10','12')) then
    while (:d1>'31') do d1=cast(cast(:d1 as integer)-1 as varchar(2));
  if (:m1 in ('04','06','09','11')) then
    while (:d1>'30') do d1=cast(cast(:d1 as integer)-1 as varchar(2));
  if (:m1='02') then
    begin
      if (:x - ((:x / 4) * 4)>0) then while (:d1>'28') do d1=cast(cast(:d1
as integer)-1 as varchar(2));
      if (:x - ((:x / 4) * 4)=0) then while (d1>'29') do d1=cast(cast(:d1 as
integer)-1 as varchar(2));
    end
  data1=cast(a1||'/'||m1||'/'||d1 as date);
end



Mais detalhes sobre a lista de discussão lista