Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

La conversion en date/heure échoue uniquement sur la clause WHERE ?

Vous semblez supposer une sorte d'évaluation de court-circuit ou un ordre garanti des prédicats dans le WHERE clause. Ce n'est pas garanti. Lorsque vous avez des types de données mixtes dans une colonne comme celle-ci, le seul moyen sûr de les traiter est avec un CASE expression.

Utiliser (par exemple)

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

Non

CONVERT(DATETIME, pa.Attribute_Value)