- 03/14/2017
- 3 minute de citit
-
- c
- j
- r
- M
- i
-
+6
.
Se aplică la: SQL Server (toate versiunile acceptate) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Întoarce 1 dacă expresia este o valoare validă de dată, oră sau dată-timp; în caz contrar, 0.
ISDATE returnează 0 dacă expresia este o valoare datetime2.
Pentru o prezentare generală a tuturor tipurilor și funcțiilor de date și ore Transact-SQL, consultați Date and Time Data Types and Functions (Transact-SQL). Rețineți că intervalul pentru datele datetime este de la 1753-01-01-01 până la 9999-12-31, în timp ce intervalul pentru datele date este de la 0001-01-01-01 până la 9999-12-31.
Convenții de sintaxă Transact-SQL
Sintaxa
ISDATE ( expression )
Nota
Pentru a vizualiza sintaxa Transact-SQL pentru SQL Server 2014 și versiunile anterioare, consultați Documentația versiunilor anterioare.
Argumente
expresie
Este un șir de caractere sau o expresie care poate fi convertită într-un șir de caractere. Expresia trebuie să aibă mai puțin de 4.000 de caractere. Tipurile de date și de date de timp, cu excepția datetime și smalldatetime, nu sunt permise ca argument pentru ISDATE.
Return Type
int
Observații
ISDATE este determinist numai dacă îl utilizați cu funcția CONVERT, dacă este specificat parametrul CONVERT style, iar style nu este egal cu 0, 100, 9 sau 109.
Valoarea de returnare a ISDATE depinde de setările stabilite de SET DATEFORMAT, SET LANGUAGE și de opțiunea de configurare a serverului Configure the default language Server Configuration Option.
Formatul expresiei ISDATE
Pentru exemple de formate valide pentru care ISDATE va returna 1, consultați secțiunea „Supported String Literal Formats for datetime” din subiectele datetime și smalldatetime. Pentru exemple suplimentare, consultați, de asemenea, coloana Input/Output din secțiunea „Arguments” din CAST și CONVERT.
Tabelul următor rezumă formatele expresiilor de intrare care nu sunt valide și care returnează 0 sau o eroare.
Expresia ISDATE | Valoarea de returnare a expresiei ISDATE | |
---|---|---|
NULL | 0 | |
Valori ale tipurilor de date enumerate în Tipuri de date în orice categorie de tipuri de date, altele decât șiruri de caractere, șiruri de caractere Unicode sau dată și oră. | 0 | |
Valori ale tipurilor de date text, ntext sau imagine. | 0 | |
Orice valoare care are o scală de precizie în secunde mai mare de 3, (.0000 până la .0000000…n). ISDATE va returna 0 dacă expresia este o valoare datetime2, dar va returna 1 dacă expresia este o valoare datetime validă. | 0 | |
Care valoare care amestecă o dată validă cu o valoare invalidă, de exemplu 1995-10-1a. | 0 |
Exemple
A. Utilizarea ISDATE pentru a testa o expresie validă a datei
Exemplul următor vă arată cum să utilizați ISDATE
pentru a testa dacă un șir de caractere este o dată validă.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Arătarea efectelor setărilor SET DATEFORMAT și SET LANGUAGE asupra valorilor returnate
Exemplele următoare arată valorile care sunt returnate ca urmare a setărilor din 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;
Exemple: Azure Synapse Analytics și Parallel Data Warehouse
C. Utilizarea ISDATE pentru a testa o expresie validă a datei
Exemplul următor vă arată cum să utilizați ISDATE
pentru a testa dacă un șir de caractere este o dată validă.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Vezi și
CAST și CONVERT (Transact-SQL)
.