Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Existe-t-il une fonction comme isdate() pour datetime2 ?

Dans SQL Server 2012, vous pouvez utiliser TRY_CONVERT :

SELECT TRY_CONVERT(DATETIME2, '2012-02-02 13:42:55.2323623'),
       TRY_CONVERT(DATETIME2, '2012-02-31 13:42:55.2323623');

Résultats :

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);

(Mêmes résultats.)

Désolé de ne pas avoir de réponse intelligente pour vous pour

SELECT ISDATE(LEFT('2012-02-02 13:42:55.2323623', 23));

Mais ça a l'air sale.

TRY_CONVERT documentation sur Microsoft Docs
TRY_PARSE documentation sur Microsoft Docs