Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

La conversione in datetime non riesce solo sulla clausola WHERE?

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)