Vejo código de desenvolvedores usando conversão de data implÃcita. Eu gostaria de uma resposta definitiva sobre por que eles não deveriam fazer isso.
SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
Vejo código de desenvolvedores usando conversão de data implÃcita. Eu gostaria de uma resposta definitiva sobre por que eles não deveriam fazer isso.
SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
Porque
'2012/12/1'
nos EUA são 11 meses após a mesma data na Europa.Permitir conversões implÃcitas significa que você está à mercê das configurações de localização.
Se você puder nomear uma empresa em que 11 meses seja uma margem de erro aceitável, ficarei impressionado.
Existem problemas que ocorrerão se uma sessão com um formato de data diferente executar o código.
Falha na declaração
Dados incorretos
Nesta situação porque cada uma das instruções alter/insert pode ser feita por usuários diferentes. Todos eles estariam executando as mesmas instruções, mas as datas resultantes seriam completamente diferentes. As instruções de inserção podem estar ocultas em um pacote que está sendo chamado apenas indiretamente. Como nenhum erro foi retornado, o problema pode não ser encontrado até muito mais tarde.
Injeção SQL
Nessa situação, um indivÃduo mal-intencionado pode alterar o formato de data das sessões de forma a fornecer acesso a dados aos quais normalmente não teria acesso.