Validação de Data em Update

Firebird

13/11/2013

Boa noite, possuo um banco de dados em Firebird 2,5 e utilizo o IBexpert e possuo tres colunas de uma tabela em que a data esta em formato VARCHAR e preciso passar para formato DATE, utilizei o comando abaixo:

update SPC set CON_DATANASCIMENTO = cast(MESNASC || '/' || DIANASC || '/' || ANONASC as date)

o comando funcionou corretamente até encontrar uma data inválida e gostaria que somente as datas válidas fossem repassadas para a coluna CON_DATANASCIMENTO, alguem saberia como fazer.....
Wellington Jr.

Wellington Jr.

Curtidas 0

Respostas

Dirceu Morais

Dirceu Morais

13/11/2013

Boa noite, possuo um banco de dados em Firebird 2,5 e utilizo o IBexpert e possuo tres colunas de uma tabela em que a data esta em formato VARCHAR e preciso passar para formato DATE, utilizei o comando abaixo:

update SPC set CON_DATANASCIMENTO = cast(MESNASC || '/' || DIANASC || '/' || ANONASC as date)

o comando funcionou corretamente até encontrar uma data inválida e gostaria que somente as datas válidas fossem repassadas para a coluna CON_DATANASCIMENTO, alguem saberia como fazer.....


Boa tarde,

Se vc tentar usar assim:
update SPC set CON_DATANASCIMENTO = cast(MESNASC || '/' || DIANASC || '/' || ANONASC as date)
where (mesnasc <> '') and (DiaNasc <> '') and (AnoNasc <> '')


Será que naum dá certo?

GOSTEI 0
Ricardo Araujo

Ricardo Araujo

13/11/2013

conseguiu resolver ?
GOSTEI 0
Celso Medeiros

Celso Medeiros

13/11/2013

Wellington Jr.

Já tentou usando case?

Assim, quando tiver data fora do intervalo ele gravará NULL.

update SPC set CON_DATANASCIMENTO =
case when cast(MESNASC || '/' || DIANASC || '/' || ANONASC as date) BETWEEN '01.01.1900' and '31.12.2500'
then cast(MESNASC || '/' || DIANASC || '/' || ANONASC as date)
else NULL
end

Espero que ajude.

Abraços,
Celso Medeiros

GOSTEI 0
POSTAR