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

ISDATE()-Beispiele in SQL Server

In SQL Server können Sie das ISDATE() verwenden Funktion, um zu prüfen, ob ein Wert ein gültiges Datum ist.

Genauer gesagt überprüft diese Funktion nur, ob der Wert ein gültiges Datum ist , Zeit , oder datetime Wert, aber kein datetime2 Wert. Wenn Sie ein datetime2 angeben Wert, ISDATE() wird Ihnen sagen, dass es sich nicht um ein Datum handelt (es wird 0 zurückgeben ).

Dieser Artikel enthält Beispiele für diese Funktion.

Syntax

Hier ist zunächst die Syntax:

ISDATE (Ausdruck)

Wobei expression ist der zu testende Ausdruck.

Beispiel 1 – Gültigkeitsdatum

Hier ist ein Beispiel mit einem gültigen Ausdruck:

SELECT ISDATE('2000-01-01') AS Result;

Ergebnis:

+----------+| Ergebnis ||----------|| 1 |+----------+

Dies gibt 1 zurück , was bedeutet, dass es sich um ein gültiges Datum handelt , Zeit , oder datetime Wert.

Beispiel 2 – Ungültiges Datum

Hier ist ein Beispiel mit einem ungültigen Ausdruck:

SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Ergebnis;

Ergebnis:

+----------+| Ergebnis ||----------|| 0 |+----------+

Dies gibt 0 zurück , was bedeutet, dass es kein gültiges Datum ist , Zeit , oder datetime Wert.

Beispiel 3 – Verwenden des Rückgabewerts

Sie können eine bedingte Anweisung verwenden, um den Rückgabewert zu verwenden (anstatt einfach entweder 0 oder 1 ).

Hier ist ein einfaches Beispiel, bei dem wir einfach Gültiges Datum drucken oder Ungültiges Datum , abhängig davon, ob der Rückgabewert 1 ist oder 0 :

IF ISDATE('2000-01-01') =1 PRINT 'Gültiges Datum' ELSE PRINT 'Ungültiges Datum';

Ergebnis:

Gültiges Datum

Beispiel 4 – Ihre SPRACHEN-Einstellungen

Der Rückgabewert von ISDATE() hängt von Ihrer LANGUAGE ab und DATEFORMAT Einstellungen.

Hier ist ein Beispiel, um zu demonstrieren, wie derselbe Wert je nach LANGUAGE unterschiedliche Ergebnisse zurückgeben kann Einstellung verwendet.

Britisch

SET LANGUAGE British;SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';

Ergebnis:

Spracheinstellung auf Englisch geändert.+-------------------------+| 20.01.2000 in britischer Sprache ||-------------------------|| 1 |+-------------------------+

us_english

SET LANGUAGE us_english;SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';

Ergebnis:

Spracheinstellung auf us_english geändert.+------------------------------------+| 20.01.2000 in us_english ||------------------------------------|| 0 |+-----------------------------------+

Dies geschieht, weil British verwendet das dd/MM/yyyy Format während us_english verwendet MM/tt/jjj .

Beispiel 5 – Ihre DATEFORMAT-Einstellungen

Wie bereits erwähnt, der Rückgabewert von ISDATE() hängt auch von Ihrem DATEFORMAT ab Einstellungen.

Hier ist ein Beispiel, um zu demonstrieren, wie derselbe Wert je nach DATEFORMAT unterschiedliche Ergebnisse zurückgeben kann Einstellung verwendet.

dmy

SET DATEFORMAT dmy;SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';

Ergebnis:

+--------------------------------------+| 20.01.2000, während DATEFORMAT dmy ist ||--------------------------------------| | 1 |+---------------------------------------------------+

mdy

SET DATEFORMAT mdy;SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';

Ergebnis:

+--------------------------------------+| 20.01.2000, während DATEFORMAT mdy ist ||---------------------------------------------------| | 0 |+--------------------------------------+