ISDATE (Transact-SQL)
Gibt 1 zurück, wenn expression ein gültiger date-, time- oder datetime-Wert ist; andernfalls 0.
ISDATE gibt 0 zurück, wenn expression ein datetime2-Wert ist.
Eine Übersicht aller Datums- und Uhrzeitdatentypen und die zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL). Beachten Sie, dass der Bereich für Datums-/Uhrzeitdaten zwischen 1753-01-01 und 9999-12-31 liegt, während der Bereich für Datumsdaten zwischen 0001-01-01 und 9999-12-31 liegt.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
ISDATE ( expression )
Argumente
- expression
Entspricht einer Zeichenfolge oder einem Ausdruck, der in eine Zeichenfolge konvertiert werden kann. Der Ausdruck muss weniger als 4000 Zeichen umfassen. Datums- und Uhrzeitdatentypen, mit Ausnahme von datetime und smalldatetime, sind nicht als Argument für ISDATE zugelassen.
Rückgabetyp
int
Hinweise
ISDATE ist nur deterministisch bei Verwendung mit der CONVERT-Funktion, wenn der style-Parameter von CONVERT angegeben wird und style nicht den Wert 0, 100, 9 oder 109 aufweist.
Der Rückgabewert von ISDATE hängt von den Einstellungen ab, die durch SET DATEFORMAT, SET LANGUAGE und die Konfigurieren der Serverkonfigurationsoption Standardsprache festgelegt werden. Beispiele finden Sie in Beispiel C.
Formate von ISDATE-Ausdrücken
Beispiele für gültige Formate, für die ISDATE den Wert 1 zurückgibt, finden Sie im Abschnitt "Unterstützte Formate der Zeichenfolgenliterale für datetime" in den Themen datetime und smalldatetime. Zusätzliche Beispiele finden Sie auch in der Spalte Input/Output des Abschnitts "Argumente" unter CAST und CONVERT.
In der folgenden Tabelle werden ungültige Formate für Eingabeausdrücke zusammengefasst, die den Wert 0 oder einen Fehler zurückgeben.
ISDATE-Ausdruck |
ISDATE-Rückgabewert |
---|---|
NULL |
0 |
Werte der in Datentypen aufgeführten Datentypen in jeder beliebigen Datentypkategorie außer Zeichenfolgen, Unicode-Zeichenfolgen oder Datum und Zeit. |
0 |
Werte des Datentyps text, ntext oder image. |
0 |
Beliebiger Wert, der mehr als 3 Dezimalstellen für Sekunden aufweist (.0000 bis .0000000... n). ISDATE gibt 0 zurück, wenn expression ein datetime2-Wert ist, gibt jedoch 1 zurück, wenn expression ein gültiger datetime-Wert ist. |
0 |
Beliebiger Wert, der ein gültiges Datum mit einem ungültigen Wert kombiniert, z. B. 1995-10-1a. |
0 |
Beispiele
A.Verwenden von ISDATE, um auf einen gültigen datetime-Ausdruck zu testen
Im folgenden Beispiel wird gezeigt, wie ISDATE verwendet wird, um zu testen, ob eine Zeichenfolge ein gültiger datetime-Wert ist.
IF ISDATE('2009-05-12 10:19:41.177') = 1
PRINT 'VALID'
ELSE
PRINT 'INVALID';
B.Anzeigen der Auswirkungen der SET DATEFORMAT-Einstellung und der SET LANGUAGE-Einstellung auf Rückgabewerte
Die folgenden Anweisungen zeigen die Werte, die als Ergebnis der Einstellungen von SET DATEFORMAT und SET LANGUAGE zurückgegeben werden.
/* Use these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
/* Expression in mdy dateformat */
SELECT ISDATE('04/15/2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04-15-2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04.15.2008'); --Returns 1.
/* Expression in myd dateformat */
SELECT ISDATE('04/2008/15'); --Returns 1.
SET DATEFORMAT mdy;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET DATEFORMAT dmy;
SELECT ISDATE('15/04/2008'); --Returns 1.
SET DATEFORMAT dym;
SELECT ISDATE('15/2008/04'); --Returns 1.
SET DATEFORMAT ydm;
SELECT ISDATE('2008/15/04'); --Returns 1.
SET DATEFORMAT ymd;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET LANGUAGE English;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET LANGUAGE Hungarian;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET LANGUAGE Swedish;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET LANGUAGE Italian;
SELECT ISDATE('2008/04/15'); --Returns 1.
/* Return to these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;