SQLSERVER - ERRO  A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo

SQLSERVER - ERRO A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo

Fala Galera, Estes dias precisei de fazer um filtro em uma tabela que utilizo a sp_whoisactive, onde armazeno tudo o que foi transacionado no ambiente, que me ajuda além de identificar possíveis problemas de performance como posso utilizar como uma tabela de auditoria..rsrsrs. Bom ao fazer o filtro por data nesta tabela me voltou o erro ( A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo logo pensei me converter o valor, porem fui fazer uma pesquisa rápida, onde vi que mudar somente a linguagem do usuário resolveria fiz o teste e funcionou perfeitamente no meu caso. Contudo as vezes para funcionar tenha que mudar a linguagem da instancia também. Mais sempre avaliar se fazer isso não irá impactar em algo no ambiente, nome caso sim se mudar em nível de instancia iria gerar impacto, então mudei somente a nível de login e deu certo, então sempre avaliem a situação muito bem.

Validando o erro, neste caso o login esta com o default language Brazilian. ´´´ select * from Resultado_WhoisActive where Dt_Log between '2022-09-19 07:00:00' and '2022-09-19 12:00:00' ´´´

Gera o erro

erro_conversao.png

Agora vamos definir o login optor com o default language como 'us_english' ´´´ ALTER LOGIN [optor] WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO ´´´ Obs: Abrir um nova query para validar o select.

´´´ select * from Resultado_WhoisActive where Dt_Log between '2022-09-19 07:00:00' and '2022-09-19 12:00:00' ´´´

consulta.png

Bons estudos.