sexta-feira, janeiro 21, 2005

SQL Server – Problemas com Formato da Data

Em alguns casos, ocorrem erros de conversão de datas para o SQL Server, com a seguinte mensagem:

Server: Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Este erro pode ocorre com apenas um Login especifico no banco de Dados SQL Server ou com todos os logins.

Isto ocorre porque o Login do SQL Server possui um idioma que ele irá utilizar. Na maioria das instalações, o SQL Server é instalado em English e os Logins assumem o idioma default da instalação do SQL Server.

Mas, está cada vez mais comum a instalação do SQL Server em idiomas específicos (português, Francês, espanhol e ect...). Neste caso, o idioma default vai ser o da instalação do SQL Server. Em outros casos, este idioma pode ser trocado, para apenas um Login ou para todos os Logins, gerando o erro acima.

Para resolver o erro citado no inicio, você tem duas soluções.

A primeira é identificar com o formato de data/hora que você está utilizando e padronizar os seus logins com o idioma que atende aquele formato de data/hora.

A segunda solução seria converter o valor para datetime, passando o formato que você está utilizando. Considero está solução melhor, pois você fica livre de problemas gerados por alteração de configuração de Logins.

Por exemplo

select convert(datetime,'2002-01-21 12:59:12.150' , 101 )

Se você trocar o 101 por 103, você vai notar que vai dar erro, pois o formato de data 103 é o seguinte formado

select convert(datetime,'21/01/2002 12:59:12.150',103)

Que é o formato de data utilizado no Brasil.

Boa Sorte

Nenhum comentário: