Partager via


ISDATE (Transact-SQL)

Retourne 1 si l'expression est une valeur date, time ou datetime valide ; sinon, 0.

ISDATE retourne 0 si l'expression est une valeur 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.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

ISDATE ( expression )

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 ou 109.

La valeur de retour d'ISDATE dépend des paramètres définis par SET DATEFORMAT, SET LANGUAGE et Configurer l'option de configuration du serveur Langue par défaut. Pour obtenir des exemples, consultez l'exemple C.

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 Input/Output 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 retourne 0 si l'expression est une valeur datetime2, mais retourne 1 si l'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

A.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;

Voir aussi

Référence

CAST et CONVERT (Transact-SQL)