ISDATE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourne 1 si le paramètre expression est une valeur de type datetime valide ; sinon, retourne 0.

ISDATE retourne 0 si le paramètre expression est une valeur de type datetime2.

Pour obtenir une vue d’ensemble de tous les types de données et fonctions de date et d’heure Transact-SQL, consultez Types de données et fonctions de date et d’heure (Transact-SQL). Notez que la plage de données datetime est comprise entre 1753-01-01 et 9999-12-31, tandis que la plage de données date est comprise entre 0001-01-01 et 9999-12-31.

Conventions de la syntaxe Transact-SQL

Syntaxe

ISDATE ( expression )

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

expression
Chaîne de caractères ou expression qui peut être convertie en une chaîne de caractères. L'expression doit comporter moins de 4 000 caractères. Les types de données de date et d'heure, sauf datetime et smalldatetime, ne sont pas autorisés comme argument pour ISDATE.

Type de retour

int

Notes

ISDATE est déterministe uniquement si elle est utilisée avec la fonction CONVERT, lorsque le paramètre de style CONVERT est spécifié et que le style est différent de 0, 100, 9 et 109.

La valeur de retour d’ISDATE dépend des paramètres définis par SET DATEFORMAT, SET LANGUAGE et dans la rubrique Configurer l’option de configuration de serveur default language.

Formats d'expression ISDATE

Pour obtenir des exemples de formats valides pour lesquels ISDATE retourne 1, consultez la section « Formats de littéraux de chaîne pris en charge pour datetime » dans les rubriques datetime et smalldatetime. Pour obtenir des exemples supplémentaires, consultez également la colonne Entrée/sortie de la section « Arguments » de CAST et CONVERT.

Le tableau suivant résume les formats d'expression d'entrée qui ne sont pas valides et qui retournent 0 ou une erreur.

Expression ISDATE Valeur retournée par ISDATE
NULL 0
Valeurs des types de données répertoriés dans Types de données dans toute catégorie de type de données autre que les chaînes de caractères, chaînes de caractères Unicode, ou date et heure. 0
Valeurs des types de données text, ntext ou image. 0
Toute valeur qui a une échelle de précision en secondes supérieure à 3 (,0000 à ,0000000...n). ISDATE renverra 0 si le paramètre expression est une valeur datetime2, mais renverra 1 si le paramètre expression est une valeur datetime valide. 0
Toute valeur qui associe une date valide à une valeur non valide, par exemple 1995-10-1a. 0

Exemples

R. Utilisation d'ISDATE pour tester une expression datetime valide.

L’exemple suivant montre comment utiliser ISDATE pour tester si une chaîne de caractères est une valeur datetime valide.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    PRINT 'VALID'  
ELSE  
    PRINT 'INVALID';  

B. Illustration des effets des paramètres SET DATEFORMAT et SET LANGUAGE sur les valeurs de retour

Les instructions suivantes affichent les valeurs qui sont retournées suite aux paramètres de SET DATEFORMAT et 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;  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

C. Utilisation d'ISDATE pour tester une expression datetime valide.

L’exemple suivant montre comment utiliser ISDATE pour tester si une chaîne de caractères est une valeur datetime valide.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

Voir aussi

CAST et CONVERT (Transact-SQL)