Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt es eine Funktion wie isdate() für datetime2?

In SQL Server 2012 können Sie TRY_CONVERT verwenden :

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

Ergebnisse:

2012-02-02 13:42:55.2323623    NULL

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

(Gleiche Ergebnisse.)

Tut mir leid, dass ich für

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

Aber das fühlt sich schmutzig an.

TRY_CONVERT Dokumentation auf Microsoft Docs
TRY_PARSE Dokumentation auf Microsoft Docs