- 03/14/2017
- 3 minuty na przeczytanie
-
- c
- j
- r
- M
- i
-
+6
.
Odnosi się do: SQL Server (wszystkie obsługiwane wersje) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Zwraca 1, jeśli wyrażenie jest poprawną datą, czasem lub wartością datetime; w przeciwnym razie – 0.
ISDATE zwraca 0, jeśli wyrażenie jest wartością datetime2.
W celu uzyskania przeglądu wszystkich typów i funkcji danych daty i czasu Transact-SQL, zobacz Typy i funkcje danych daty i czasu (Transact-SQL). Należy pamiętać, że zakres dla danych datetime to 1753-01-01 do 9999-12-31, natomiast zakres dla danych date to 0001-01-01 do 9999-12-31.
Konwencje składni języka Transact-SQL
Syntaktyka
ISDATE ( expression )
Uwaga
Aby wyświetlić składnię języka Transact-SQL dla SQL Server 2014 i wcześniejszych, zobacz Dokumentacja poprzednich wersji.
Argumenty
wyrażenie
Jest ciągiem znaków lub wyrażeniem, które można przekonwertować na ciąg znaków. Wyrażenie musi mieć mniej niż 4 000 znaków. Typy danych daty i czasu, z wyjątkiem datetime i smalldatetime, nie są dozwolone jako argumenty dla ISDATE.
Return Type
int
Remarks
ISDATE jest deterministyczny tylko wtedy, gdy używasz go z funkcją CONVERT, jeśli parametr CONVERT style jest określony, a styl nie jest równy 0, 100, 9 lub 109.
Wartość zwracana przez ISDATE zależy od ustawień ustawionych przez SET DATEFORMAT, SET LANGUAGE i Configure the default language Server Configuration Option.
Formaty wyrażeniaISDATE
Przykłady poprawnych formatów, dla których ISDATE zwróci 1, znajdują się w sekcji „Obsługiwane literalne formaty łańcuchowe dla datetime” w tematach datetime i smalldatetime. Dodatkowe przykłady można znaleźć również w kolumnie Input/Output w sekcji „Argumenty” w tematach CAST i CONVERT.
Poniższa tabela podsumowuje formaty wyrażeń wejściowych, które nie są ważne i zwracają 0 lub błąd.
ISDATE wyrażenie | ISDATE wartość zwracana |
---|---|
NULL | 0 |
Wartości typów danych wymienionych w Typy danych w dowolnej kategorii typów danych innej niż łańcuchy znaków, łańcuchy znaków Unicode lub data i czas. | 0 |
Wartości typów danych text, ntext lub image. | 0 |
Dowolna wartość, która ma skalę precyzji sekund większej 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 poprawną wartością datetime. | 0 |
Dowolna wartość, która miesza poprawną datę z niepoprawną wartością, na przykład 1995-10-1a. | 0 |
Przykłady
A. Używanie ISDATE do testowania poprawnego wyrażenia datetime
Następujący przykład pokazuje, jak używać ISDATE
do testowania, czy ciąg znaków jest poprawnym datetime.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Pokazywanie wpływu ustawień SET DATEFORMAT i SET LANGUAGE na wartości zwracane
Następujące stwierdzenia 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 i Parallel Data Warehouse
C. Używanie ISDATE do testowania poprawnego wyrażenia datetime
Następujący przykład pokazuje, jak używać ISDATE
do testowania, czy ciąg znaków jest poprawnym datetime.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Zobacz także
CAST i CONVERT (Transact-SQL)
.