sql >> Base de Datos >  >> RDS >> Sqlserver

¿La conversión a fecha y hora falla solo en la cláusula WHERE?

Parece estar asumiendo algún tipo de evaluación de cortocircuito u ordenamiento garantizado de los predicados en WHERE cláusula. Esto no está garantizado. Cuando tiene tipos de datos mixtos en una columna como esa, la única forma segura de manejarlos es con un CASE expresión.

Usar (p. ej.)

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

No

CONVERT(DATETIME, pa.Attribute_Value)