Udostępnij za pomocą


ISDATE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca 1, jeśli wyrażenie jest prawidłową wartością daty-czasu ; w przeciwnym razie 0.

ISDATE zwraca 0, jeśli wyrażenie jest wartością datetime2 .

Aby zapoznać się z omówieniem wszystkich typów danych i funkcji daty i godziny Transact-SQL, zobacz Typy danych i funkcje daty i godziny (Transact-SQL). Należy zauważyć, że zakres danych datowych to 1753-01-01 do 9999-12-31, natomiast zakres dla danych datowych to 0001-01-01 do 9999-12-31.

Transact-SQL konwencje składni

Składnia

ISDATE ( expression )

Arguments

expression
To ciąg znaków lub wyrażenie , które można przekształcić w ciąg znaków. Wyrażenie musi mieć mniej niż 4 000 znaków. Typy danych datowe i godzinowe, z wyjątkiem datetime i smalldatetime, nie są dozwolone jako argument dla ISDATE.

Zwracany typ

int

Uwagi

ISDATE jest deterministyczne tylko wtedy, gdy używasz go z funkcją CONVERT , jeśli parametr stylu CONVERT jest podany, a styl nie jest równoważny 0, 100, 9 ani 109.

Wartość zwrotu ISDATE zależy od ustawień ustawionych przez SET DATEFORMAT, SET LANGUAGE oraz Configure the default language Server Configuration Option.

Formaty wyrażeń ISDATE

Przykłady poprawnych formatów, dla których ISDATE zwraca 1, można znaleźć w sekcji "Supported String Literal Formats for datetime" w tematach datetime i smalldatetime . Dodatkowe przykłady można znaleźć w kolumnie Input/Output w sekcji "Argumenty" w CAST i CONVERT.

Poniższa tabela podsumowuje formaty wyrażeń wejściowych, które nie są poprawne i zwracają 0 lub błąd.

Wyrażenie ISDATE Wartość zwrotu ISDATE
ZERO 0
Wartości typów danych wymienionych w typach danych w dowolnej kategorii typów danych innych niż ciągi znaków, ciągi znaków Unicode lub data i godzina. 0
Wartości tekstu,ntextu lub typów danych obrazowych . 0
Każda wartość, której skala o sekundach jest większa niż 3, (.0000 do .0000000...n). ISDATE zwróci 0, jeśli wyrażenie jest wartością datetime2 , ale zwróci 1, jeśli wyrażenie jest prawidłową wartością datetime . 0
Dowolna wartość, która miesza ważną datę z wartością nieprawidłową, na przykład 1995-10-1a. 0

Przykłady

A. Wykorzystanie ISDATE do testowania poprawnego wyrażenia date-time

Poniższy przykład pokazuje, jak sprawdzić ISDATE , czy ciąg znaków jest poprawnym datetime.

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

B. Pokaz wpływu ustawień SET DATEFORMAT i SET LANGUAGE na wartości zwracane

Poniższe sformułowania pokazują wartości zwracane w wyniku ustawień SET DATEFORMAT i SET LANGUAGE.

/* 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;  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Wykorzystanie ISDATE do testowania poprawnego wyrażenia date-time

Poniższy przykład pokazuje, jak sprawdzić ISDATE , czy ciąg znaków jest poprawnym datetime.

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

Zobacz też

RZUTOWANIE i konwertowanie (Transact-SQL)