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

ISDATE di SQL Server nella visualizzazione indicizzata

Dovrebbe essere, se non del tutto:

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

ma non stai usando ISDATE WITH CONVERT, poiché non esiste un'espressione come

ISDATE(CONVERT(varchar,ColumnName,112)) 

senza la conversione annidata il valore restituito dipende da cose come le impostazioni della lingua, quindi è un comportamento non deterministico. Senza una conoscenza "esterna", non è possibile prevedere il risultato che si sta ottenendo, basandosi solo sull'input.