sql >> Database >  >> RDS >> Sqlserver

ISDATE() Voorbeelden in SQL Server

In SQL Server kunt u de ISDATE() . gebruiken functie om te controleren of een waarde een geldige datum is.

Om specifieker te zijn, deze functie controleert alleen of de waarde een geldige datum . is , tijd , of datetime waarde, maar geen datetime2 waarde. Als u een datetime2 . opgeeft waarde, ISDATE() zal je vertellen dat het geen datum is (het zal 0 opleveren) ).

Dit artikel bevat voorbeelden van deze functie.

Syntaxis

Ten eerste, hier is de syntaxis:

ISDATE ( expression )

Waar expression is de uitdrukking die moet worden getest.

Voorbeeld 1 – Geldige datum

Hier is een voorbeeld waarin een geldige uitdrukking wordt gebruikt:

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

Resultaat:

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

Dit retourneert 1 , wat betekent dat het een geldige datum . is , tijd , of datetime waarde.

Voorbeeld 2 – Ongeldige datum

Hier is een voorbeeld met een ongeldige uitdrukking:

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

Resultaat:

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

Dit retourneert 0 , wat betekent dat het geen geldige datum is , tijd , of datetime waarde.

Voorbeeld 3 – De retourwaarde gebruiken

U kunt een voorwaardelijke instructie gebruiken om gebruik te maken van de geretourneerde waarde (in plaats van eenvoudigweg 0 weer te geven of 1 ).

Hier is een eenvoudig voorbeeld waarbij we gewoon Geldige datum afdrukken of Ongeldige datum , afhankelijk van of de retourwaarde 1 . is of 0 :

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

Resultaat:

Valid Date

Voorbeeld 4 – Uw TAAL-instellingen

De retourwaarde van ISDATE() hangt af van uw LANGUAGE en DATEFORMAT instellingen.

Hier is een voorbeeld om te demonstreren hoe dezelfde waarde verschillende resultaten kan opleveren, afhankelijk van de LANGUAGE instelling gebruikt.

Brits

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

Resultaat:

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

us_english

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

Resultaat:

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

Dit gebeurt omdat British gebruikt de dd/MM/jjjj formatteren terwijl us_english gebruikt MM/dd/jjj .

Voorbeeld 5 – Uw DATEFORMAT-instellingen

Zoals vermeld, is de geretourneerde waarde van ISDATE() hangt ook af van uw DATEFORMAT instellingen.

Hier is een voorbeeld om te demonstreren hoe dezelfde waarde verschillende resultaten kan opleveren, afhankelijk van de DATEFORMAT instelling gebruikt.

dmy

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

Resultaat:

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

Resultaat:

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


  1. MySQL-opdracht invoegen versus T-SQL-querysyntaxis met voorbeelden

  2. Geaggregeerde functie in een SQL-updatequery?

  3. Tools om in teamverband te werken met opgeslagen procedures in Oracle?

  4. Hoe de prestaties van Moodle te benchmarken?