Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwersja na datetime kończy się niepowodzeniem tylko w klauzuli WHERE?

Wygląda na to, że zakładasz jakiś rodzaj oceny zwarcia lub gwarantowaną kolejność predykatów w WHERE klauzula. Nie jest to gwarantowane. Kiedy masz mieszane typy danych w takiej kolumnie, jedynym bezpiecznym sposobem radzenia sobie z nimi jest użycie CASE wyrażenie.

Użyj (np.)

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

Nie

CONVERT(DATETIME, pa.Attribute_Value)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ograniczyć wiersze w zestawie wyników SQL Server

  2. Rozróżnianie według daty zamówienia i produktów SQL Server 2008

  3. 5 sposobów naprawienia błędu „Podziel przez zero” w programie SQL Server (Msg 8134)

  4. Jak wykonać plik .sql za pomocą powershell?

  5. Ucieczka przed znakiem ucieczki nie działa – operator SQL LIKE