ISDATE (Transact-.SQL)

  • 14.03.2017
  • 3 Minuten zu lesen
    • c
    • j
    • r
    • M
    • i
    • +6

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Gibt 1 zurück, wenn der Ausdruck ein gültiger Datums-, Zeit- oder Datetime-Wert ist; andernfalls 0.

ISDATE gibt 0 zurück, wenn der Ausdruck ein datetime2-Wert ist.

Eine Übersicht über alle Transact-SQL-Datums- und Zeitdatentypen und Funktionen finden Sie unter Datums- und Zeitdatentypen und Funktionen (Transact-SQL). Beachten Sie, dass der Bereich für Datetime-Daten 1753-01-01 bis 9999-12-31 ist, während der Bereich für Datumsdaten 0001-01-01 bis 9999-12-31 ist.

Transact-SQL-Syntaxkonventionen

Syntax

ISDATE ( expression )

Hinweis

Um die Transact-SQL-Syntax für SQL Server 2014 und früher anzuzeigen, siehe Dokumentation zu früheren Versionen.

Argumente

Ausdruck
Ist eine Zeichenkette oder ein Ausdruck, der in eine Zeichenkette konvertiert werden kann. Der Ausdruck muss weniger als 4.000 Zeichen lang sein. Datums- und Zeitdatentypen, außer datetime und smalldatetime, sind als Argument für ISDATE nicht zulässig.

Rückgabetyp

int

Bemerkungen

ISDATE ist nur dann deterministisch, wenn Sie es mit der Funktion CONVERT verwenden, wenn der Parameter CONVERT style angegeben ist und style nicht gleich 0, 100, 9 oder 109 ist.

Der Rückgabewert von ISDATE hängt von den Einstellungen ab, die durch SET DATEFORMAT, SET LANGUAGE und die Serverkonfigurationsoption Standardsprache konfigurieren festgelegt wurden.

ISDATE-Ausdruck Formate

Beispiele für gültige Formate, für die ISDATE 1 zurückgibt, finden Sie im Abschnitt „Unterstützte String-Literalformate für datetime“ in den Themen datetime und smalldatetime. Weitere Beispiele finden Sie auch in der Spalte „Input/Output“ im Abschnitt „Argumente“ von CAST und CONVERT.

Die folgende Tabelle fasst die Formate von Eingabeausdrücken zusammen, die nicht gültig sind und 0 oder einen Fehler zurückgeben.

ISDATE-Ausdruck ISDATE-Rückgabewert
NULL 0
Werte von Datentypen, die unter Datentypen in einer beliebigen Datentypkategorie außer Zeichenketten, Unicode-Zeichenketten oder Datum und Uhrzeit aufgeführt sind. 0
Werte von Text-, nText- oder Bilddatentypen. 0
Jeder Wert, der eine Sekundenpräzisionsskala größer als 3 hat (.0000 bis .0000000…n). ISDATE gibt 0 zurück, wenn der Ausdruck ein datetime2-Wert ist, aber 1, wenn der Ausdruck ein gültiger datetime-Wert ist. 0
Jeder Wert, der ein gültiges Datum mit einem ungültigen Wert vermischt, zum Beispiel 1995-10-1a. 0

Beispiele

A. ISDATE verwenden, um auf einen gültigen Datumsausdruck zu testen

Das folgende Beispiel zeigt, wie Sie ISDATE verwenden können, um zu testen, ob eine Zeichenfolge ein gültiges Datum ist.

IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID'; 

B. Anzeigen der Auswirkungen der Einstellungen SET DATEFORMAT und SET LANGUAGE 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 Parallel Data Warehouse

C. Verwenden von ISDATE zum Testen auf einen gültigen Datumsausdruck

Das folgende Beispiel zeigt, wie Sie ISDATE verwenden, um zu testen, ob eine Zeichenfolge ein gültiges Datum ist.

IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID'; 

Siehe auch

CAST und CONVERT (Transact-SQL)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.