Dans SQL Server, vous pouvez utiliser le ISDATE()
fonction pour vérifier si une valeur est une date valide.
Pour être plus précis, cette fonction vérifie uniquement si la valeur est une date valide , heure , ou dateheure valeur, mais pas datetime2 valeur. Si vous fournissez une datetime2 valeur, ISDATE()
vous dira que ce n'est pas une date (il renverra 0
).
Cet article contient des exemples de cette fonction.
Syntaxe
Tout d'abord, voici la syntaxe :
ISDATE ( expression )
Où expression
est l'expression à tester.
Exemple 1 – Date valide
Voici un exemple utilisant une expression valide :
SELECT ISDATE('2000-01-01') AS Result;
Résultat :
+----------+ | Result | |----------| | 1 | +----------+
Cela renvoie 1
, ce qui signifie qu'il s'agit d'une date valide , heure , ou dateheure valeur.
Exemple 2 – Date invalide
Voici un exemple avec une expression non valide :
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
Résultat :
+----------+ | Result | |----------| | 0 | +----------+
Cela renvoie 0
, ce qui signifie qu'il ne s'agit pas d'une date valide , heure , ou dateheure valeur.
Exemple 3 - Utilisation de la valeur de retour
Vous pouvez utiliser une instruction conditionnelle pour utiliser la valeur de retour (plutôt que de simplement afficher soit 0
ou 1
).
Voici un exemple de base où nous imprimons simplement la date de validité ou Date invalide , selon que la valeur de retour est 1
ou 0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
Résultat :
Valid Date
Exemple 4 - Vos paramètres LANGUAGE
La valeur de retour de ISDATE()
dépend de votre LANGUAGE
et DATEFORMAT
paramètres.
Voici un exemple pour montrer comment la même valeur peut renvoyer des résultats différents selon le LANGUAGE
paramètre utilisé.
britannique
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
Résultat :
Changed language setting to British. +-------------------------+ | 20/01/2000 in British | |-------------------------| | 1 | +-------------------------+
us_francais
SET LANGUAGE us_english; SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';
Résultat :
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
Cela se produit parce que British
utilise le jj/MM/aaaa formater en us_english
utilise MM/jj/aaa .
Exemple 5 - Vos paramètres DATEFORMAT
Comme mentionné, la valeur de retour de ISDATE()
dépend aussi de votre DATEFORMAT
paramètres.
Voici un exemple pour montrer comment la même valeur peut renvoyer des résultats différents selon le DATEFORMAT
paramètre utilisé.
jma
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
Résultat :
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is dmy | |--------------------------------------| | 1 | +--------------------------------------+
mdy
SET DATEFORMAT mdy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';
Résultat :
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+