Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A conversão para datetime falha apenas na cláusula WHERE?


Você parece estar assumindo algum tipo de avaliação de curto-circuito ou ordenação garantida dos predicados no WHERE cláusula. Isso não é garantido. Quando você mistura tipos de dados em uma coluna como essa, a única maneira segura de lidar com eles é com um CASE expressão.

Usar (por exemplo)
CONVERT(DATETIME, 
      CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)

Não
CONVERT(DATETIME, pa.Attribute_Value)