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

Existe uma função como isdate() para datetime2?


No SQL Server 2012, você pode usar TRY_CONVERT :
SELECT TRY_CONVERT(DATETIME2, '2012-02-02 13:42:55.2323623'),
       TRY_CONVERT(DATETIME2, '2012-02-31 13:42:55.2323623');

Resultados:
2012-02-02 13:42:55.2323623    NULL

Ou TRY_PARSE :
SELECT TRY_PARSE('2012-02-02 13:42:55.2323623' AS DATETIME2),
       TRY_PARSE('2012-02-31 13:42:55.2323623' AS DATETIME2);

(Os mesmos resultados.)

Desculpe por não ter uma resposta inteligente para você para
SELECT ISDATE(LEFT('2012-02-02 13:42:55.2323623', 23));

Mas isso parece sujo.

TRY_CONVERT documentação no Microsoft Docs
TRY_PARSE documentação no Microsoft Docs