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:
Postar um comentário