Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

ISDATE() Exemples dans SQL Server

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 )

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                                    |
+--------------------------------------+