- 03/14/2017
- 3 minutes de lecture
-
- c
- j
- r
- M
- i
-
+6
.
S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Retourne 1 si l’expression est une valeur de date, d’heure ou de temps valide ; sinon, 0.
ISDATE renvoie 0 si l’expression est une valeur datetime2.
Pour un aperçu de tous les types et fonctions de données de date et d’heure de Transact-SQL, voir Types et fonctions de données de date et d’heure (Transact-SQL). Notez que la plage des données de temps de date est de 1753-01-01 à 9999-12-31, tandis que la plage des données de date est de 0001-01-01 à 9999-12-31.
Conventions de la syntaxe Transact-SQL
Syntaxe
ISDATE ( expression )
Note
Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et les versions antérieures, voir la documentation des versions antérieures.
Arguments
expression
Est une chaîne de caractères ou une expression qui peut être convertie en 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, à l’exception de datetime et smalldatetime, ne sont pas autorisés comme argument pour ISDATE.
Type de retour
int
Remarques
ISDATE est déterministe uniquement si vous l’utilisez avec la fonction CONVERT, si le paramètre style CONVERT est spécifié et si style n’est pas égal à 0, 100, 9 ou 109.
La valeur de retour de ISDATE dépend des paramètres définis par SET DATEFORMAT, SET LANGUAGE et Configurer la langue par défaut Option de configuration du serveur.
Formats d’expression de ISDATE
Pour des exemples de formats valides pour lesquels ISDATE retournera 1, consultez la section « Formats littéraux de chaîne pris en charge pour datetime » dans les rubriques datetime et smalldatetime. Pour 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 renvoient 0 ou une erreur.
Expression ISDATE | Valeur de retour ISDATE |
---|---|
NULL | 0 |
Valeurs des types de données énumérés dans Types de données dans toute catégorie de type de données autre que les chaînes de caractères, les chaînes de caractères Unicode ou la date et l’heure. | 0 |
Valeurs de types de données texte, ntext ou image. | 0 |
Toute valeur dont l’échelle de précision des secondes est supérieure à 3, (.0000 à .0000000…n). ISDATE retournera 0 si l’expression est une valeur datetime2, mais retournera 1 si l’expression est une valeur datetime valide. | 0 |
Toute valeur qui mélange une date valide avec une valeur invalide, par exemple 1995-10-1a. | 0 |
Exemples
A. Utiliser ISDATE pour tester une expression de date valide
L’exemple suivant vous montre comment utiliser ISDATE
pour tester si une chaîne de caractères est une date valide.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Montrer les effets des paramètres SET DATEFORMAT et SET LANGUAGE sur les valeurs de retour
Les déclarations suivantes montrent les valeurs qui sont retournées à la suite des 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 Parallel Data Warehouse
C. Utilisation d’ISDATE pour tester une expression de date valide
L’exemple suivant vous montre comment utiliser ISDATE
pour tester si une chaîne de caractères est une date valide.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
See Also
CAST et CONVERT (Transact-SQL)
.