ISDATE (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt 1 zurück, falls der Ausdruck ein gültiger datetime-Wert ist, andernfalls 0 (null).
ISDATE gibt 0 (null) zurück, wenn der Ausdruck ein datetime2-Wert ist.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen für 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.
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
Bemerkungen
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 Option Konfigurieren der Serverkonfigurationsoption Standardsprache festgelegt werden.
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 Eingabe/Ausgabe 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 |
Die Werte der Datentypen text, ntext, or image. | 0 |
Beliebiger Wert mit mehr als drei Dezimalstellen (.0000 bis .0000000... n) für die Genauigkeit bei Sekundenangaben. ISDATE gibt 0 zurück, wenn der Ausdruck ein datetime2-Wert ist, gibt jedoch 1 zurück, wenn der Ausdruck 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;
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
C. 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
SELECT 'VALID';
ELSE
SELECT 'INVALID';