sql >> Base de Datos >  >> RDS >> Sqlserver

¿Existe una función como isdate() para datetime2?

En SQL Server 2012, puede 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

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

(Los mismos resultados.)

Lo siento, no tengo una respuesta inteligente para usted para

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

Pero eso se siente sucio.

TRY_CONVERT documentación en Microsoft Docs
TRY_PARSE documentación en Microsoft Docs