Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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';