Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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.
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';