sql >> Database teknologi >  >> RDS >> Sqlserver

ISDATE() Eksempler i SQL Server

I SQL Server kan du bruge ISDATE() funktion til at kontrollere, om en værdi er en gyldig dato.

For at være mere specifik kontrollerer denne funktion kun, om værdien er en gyldig datotid eller datotid værdi, men ikke en datetime2 værdi. Hvis du angiver en datetime2 værdi, ISDATE() vil fortælle dig, at det ikke er en dato (det vil returnere 0 ).

Denne artikel indeholder eksempler på denne funktion.

Syntaks

Først her er syntaksen:

ISDATE ( expression )

Hvor expression er det udtryk, der skal testes.

Eksempel 1 – Gyldig dato

Her er et eksempel, der bruger et gyldigt udtryk:

SELECT ISDATE('2000-01-01') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Dette returnerer 1 , hvilket betyder, at det er en gyldig datotid eller datotid værdi.

Eksempel 2 – Ugyldig dato

Her er et eksempel med et ugyldigt udtryk:

SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Dette returnerer 0 , hvilket betyder, at det ikke er en gyldig datotid eller datotid værdi.

Eksempel 3 – Brug af returværdien

Du kan bruge en betinget sætning til at gøre brug af returværdien (i stedet for blot at vise enten 0 eller 1 ).

Her er et grundlæggende eksempel, hvor vi blot udskriver Gyldig dato eller Ugyldig dato , afhængigt af om returværdien er 1 eller 0 :

IF ISDATE('2000-01-01') = 1  
    PRINT 'Valid Date'  
ELSE  
    PRINT 'Invalid Date';

Resultat:

Valid Date

Eksempel 4 – Dine LANGUAGE-indstillinger

Returværdien for ISDATE() afhænger af dit LANGUAGE og DATEFORMAT indstillinger.

Her er et eksempel for at demonstrere, hvordan den samme værdi kan returnere forskellige resultater afhængigt af LANGUAGE den anvendte indstilling.

britisk

SET LANGUAGE British;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';

Resultat:

Changed language setting to British.
+-------------------------+
| 20/01/2000 in British   |
|-------------------------|
| 1                       |
+-------------------------+

us_engelsk

SET LANGUAGE us_english;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';

Resultat:

Changed language setting to us_english.
+----------------------------+
| 20/01/2000 in us_english   |
|----------------------------|
| 0                          |
+----------------------------+

Dette sker, fordi British bruger dd/MM/åååå formater mens us_english bruger MM/dd/ååå .

Eksempel 5 – Dine DATEFORMAT-indstillinger

Som nævnt returnerer værdien ISDATE() afhænger også af dit DATEFORMAT indstillinger.

Her er et eksempel for at demonstrere, hvordan den samme værdi kan returnere forskellige resultater afhængigt af DATEFORMAT den anvendte indstilling.

dmy

SET DATEFORMAT dmy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';

Resultat:

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

Resultat:

+--------------------------------------+
| 20/01/2000 while DATEFORMAT is mdy   |
|--------------------------------------|
| 0                                    |
+--------------------------------------+


  1. Hvordan ville du implementere sekvenser i Microsoft SQL Server?

  2. MySQL-liste over alle procedurer

  3. Postgres Alter Column Heltal til Boolean

  4. nullvalue:Vis NULL-værdier i SQLite