ISDATE (Transact-SQL)

  • 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)

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.