Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server ISDATE na exibição indexada


Deve ser, se for:
SELECT ... 
    CASE 
         WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) 
         ELSE NULL 
    END
....

mas você não está usando ISDATE WITH CONVERT, já que não existe uma expressão como
ISDATE(CONVERT(varchar,ColumnName,112)) 

sem a conversão aninhada, o valor de retorno depende de coisas como configurações de idioma, portanto, é um comportamento não determinístico. Sem conhecimento "externo", não é possível prever o resultado que se está obtendo, com base apenas na entrada.