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:
mdy
SET DATEFORMAT mdy;SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';
Ergebnis: