ISDATE (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 )

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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';  

Weitere Informationen

CAST und CONVERT (Transact-SQL)