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

Esiste una funzione come isdate() per datetime2?

In SQL Server 2012 puoi usare TRY_CONVERT :

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

Risultati:

2012-02-02 13:42:55.2323623    NULL

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

(Stessi risultati.)

Mi dispiace di non avere una risposta intelligente per te per

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

Ma sembra sporco.

TRY_CONVERT documentazione su Microsoft Docs
TRY_PARSE documentazione su Microsoft Docs