Sembra che tu stia assumendo una sorta di valutazione di cortocircuito o ordinamento garantito dei predicati nel WHERE
clausola. Questo non è garantito. Quando hai tipi di dati misti in una colonna del genere, l'unico modo sicuro per gestirli è con un CASE
espressione.
Usa (es.)
CONVERT(DATETIME,
CASE WHEN ISDATE(pa.Attribute_Value) = 1 THEN pa.Attribute_Value END)
Non
CONVERT(DATETIME, pa.Attribute_Value)