Sdílet prostřednictvím


ISDATE (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrátí 1, pokud je výraz platnou hodnotou datetime ; jinak 0.

ISDATE vrací 0, pokud je výraz hodnotou datetime2 .

Přehled všech datových typů a funkcí Transact-SQL data a času najdete v tématu datové typy a funkce data a času (Transact-SQL). Všimněte si, že rozsah dat o datu je od 1753-01-01 do 9999-12-31, zatímco rozsah pro data je od 0001-01-01 do 9999-12-31.

Transact-SQL konvence syntaxe

Syntaxe

ISDATE ( expression )

Arguments

expression
Je řetězec znaků nebo výraz, který lze převést na řetězec znaků. Výraz musí mít méně než 4 000 znaků. Datové typy dat a čas, kromě datetime a smalldatetime, nejsou povoleny jako argument pro ISDATE.

Návratový typ

int

Poznámky

ISDATE je deterministické pouze tehdy, pokud ho použijete s funkcí CONVERT , pokud je specifikován parametr stylu CONVERT a styl není roven 0, 100, 9 nebo 109.

Návratová hodnota ISDATE závisí na nastavení nastavených pomocí SET DATEFORMAT, SET LANGUAGE a Configure the default language Server Configuration Option.

ISDATE formáty výrazů

Příklady platných formátů, pro které ISDATE vrátí 1, viz sekce "Podporované formáty literálních řetězců pro datetime" v datetime a smalldatetime tématech. Pro další příklady viz také sloupec Vstup/Výstup v sekci "Argumenty" v CAST a CONVERT.

Následující tabulka shrnuje formáty vstupních výrazů, které nejsou platné a které vracejí 0 nebo chybu.

ISDATE výraz Vrácená hodnota ISDATE
NULA 0
Hodnoty datových typů uvedené v datových typech v jakékoli kategorii datových typů kromě řetězců znaků, Unicode znakových řetězců nebo data a času. 0
Hodnoty textu, ntextu nebo typů datových obrázků . 0
Jakákoli hodnota, která má přesnost sekund větší než 3, (.0000 až .0000000...n). ISDATE vrátí 0, pokud je výraz hodnotou datetime2 , ale vrátí 1, pokud je výraz platnou hodnotou datetime . 0
Jakákoli hodnota, která kombinuje platné datum s neplatnou hodnotou, například 1995-10-1a. 0

Examples

A. Použití ISDATE k testování platného výrazu date-time

Následující příklad ukazuje, jak použít ISDATE k ověření, zda je řetězec znaků platným datetime.

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

B. Zobrazení vlivu nastavení SET DATEFORMAT a SET LANGUAGE na vrácené hodnoty

Následující tvrzení ukazují hodnoty, které jsou vráceny v důsledku nastavení a SET DATEFORMATSET 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;  

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

C. Použití ISDATE k testování platného výrazu date-time

Následující příklad ukazuje, jak použít ISDATE k ověření, zda je řetězec znaků platným datetime.

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

Viz také

CAST a CONVERT (Transact-SQL)