sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server ISDATE i indexerad vy

Det borde vara, om alls:

SELECT ... 
    CASE 
         WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) 
         ELSE NULL 
    END
....

men du använder inte ISDATE WITH CONVERT, eftersom det inte finns något uttryck som

ISDATE(CONVERT(varchar,ColumnName,112)) 

utan den kapslade konverteringen beror returvärdet på saker som språkinställningar, därför är det ett icke-deterministiskt beteende. Utan "extern" kunskap är det inte möjligt att förutsäga resultatet man får, baserat enbart på input.



  1. Återställ automatisk inkrementräknare i postgres

  2. Snabbaste sättet att infoga/uppdatera en miljon rader i Laravel 5.7

  3. Använder parameter som kolumnnamn i Postgres-funktionen

  4. PHP/MySQL-rapporteringsbibliotek