sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertering till datetime misslyckas endast på WHERE-klausulen?

Du verkar anta någon form av kortslutningsutvärdering eller garanterad ordning av predikaten i WHERE klausul. Detta är inte garanterat. När du har blandade datatyper i en sådan kolumn är det enda säkra sättet att hantera dem med ett CASE uttryck.

Använd (t.ex.)

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

Inte

CONVERT(DATETIME, pa.Attribute_Value)


  1. Hur man filtrerar poster med Aggregerad funktion COUNT

  2. Hur man strukturerar databasen för olästa objektvarningar per användare

  3. Beräkna antalet samtidiga händelser i SQL

  4. Ska jag lagra tidszonen separat från tidsstämpeln för Postgres och JDBC?