Freigeben über


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

Weitere Informationen

CAST und CONVERT (Transact-SQL)