- 14.03.2017
- 3 minuty čtení
-
- c
- j
- r
- M
- i
-
+6
Týká se: SQL Server (všechny podporované verze) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Vrací 1, pokud je výraz platnou hodnotou data, času nebo data, jinak 0.
ISDATE vrací 0, pokud je výraz hodnotou datetime2.
Přehled všech datových typů a funkcí jazyka Transact-SQL pro datum a čas viz Datové typy a funkce pro datum a čas (Transact-SQL). Všimněte si, že rozsah pro data typu datetime je 1753-01-01 až 9999-12-31, zatímco rozsah pro data typu date je 0001-01-01 až 9999-12-31.
Syntaktické konvence jazyka Transact-SQL
Syntaxe
ISDATE ( expression )
Poznámka
Pro zobrazení syntaxe jazyka Transact-SQL pro SQL Server 2014 a starší verze viz Dokumentace k předchozím verzím.
Argumenty
výraz
Je řetězec znaků nebo výraz, který lze převést na řetězec znaků. Výraz musí mít méně než 4000 znaků. Datové a časové typy, s výjimkou datetime a smalldatetime, nejsou jako argument pro ISDATE povoleny.
Return Type
int
Remarks
ISDATE je deterministický, pouze pokud jej použijete s funkcí CONVERT, pokud je zadán parametr CONVERT style a style není roven 0, 100, 9 nebo 109.
Vratná hodnota funkce ISDATE závisí na nastavení nastaveném funkcemi SET DATEFORMAT, SET LANGUAGE a Configure the default language Server Configuration Option.
Formáty výrazu ISDATE
Příklady platných formátů, pro které funkce ISDATE vrátí 1, najdete v části „Podporované literální formáty řetězců pro datetime“ v tématech datetime a smalldatetime. Další příklady naleznete také ve sloupci Input/Output v části „Argumenty“ u CAST a CONVERT.
Následující tabulka shrnuje formáty vstupních výrazů, které nejsou platné a které vracejí 0 nebo chybu.
Výraz ISDATE | Vratná hodnota ISDATE |
---|---|
NULL | 0 |
Hodnoty datových typů uvedených v části Datové typy v jakékoli kategorii datových typů jiné než znakové řetězce, znakové řetězce Unicode nebo datum a čas. | 0 |
Hodnoty datových typů text, ntext nebo obrázek. | 0 |
Jakákoli hodnota, která má sekundovou stupnici přesnosti 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á mísí platné datum s neplatnou hodnotou, například 1995-10-1a. | 0 |
Příklady
A. Použití ISDATE k testování platného výrazu pro datum
Následující příklad ukazuje, jak pomocí ISDATE
otestovat, zda je znakový řetězec platným výrazem pro datum.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Ukázka vlivu nastavení SET DATEFORMAT a SET LANGUAGE na návratové hodnoty
Následující příklady ukazují hodnoty, které jsou vráceny v důsledku nastavení SET DATEFORMAT
a 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;
Příklady: Azure Synapse Analytics a Parallel Data Warehouse
C. Použití ISDATE k testování platného výrazu pro časový údaj data
Následující příklad ukazuje, jak pomocí ISDATE
otestovat, zda je řetězec znaků platným časovým údajem data.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Viz také
CAST a CONVERT (Transact-SQL)
.