sql >> Databasteknik >  >> RDS >> Sqlserver

ISDATE() Exempel i SQL Server

I SQL Server kan du använda ISDATE() funktion för att kontrollera om ett värde är ett giltigt datum.

För att vara mer specifik kontrollerar den här funktionen bara om värdet är ett giltigt datumtid , eller datumtid värde, men inte en datetime2 värde. Om du anger en datetime2 värde, ISDATE() kommer att berätta för dig att det inte är ett datum (det kommer att returnera 0 ).

Den här artikeln innehåller exempel på denna funktion.

Syntax

Först, här är syntaxen:

ISDATE ( expression )

Där expression är uttrycket som ska testas.

Exempel 1 – Giltigt datum

Här är ett exempel med ett giltigt uttryck:

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

Resultat:

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

Detta returnerar 1 , vilket betyder att det är ett giltigt datumtid , eller datumtid värde.

Exempel 2 – Ogiltigt datum

Här är ett exempel med ett ogiltigt uttryck:

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

Resultat:

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

Detta returnerar 0 , vilket betyder att det inte är ett giltigt datumtid , eller datumtid värde.

Exempel 3 – Använda returvärdet

Du kan använda en villkorssats för att använda returvärdet (istället för att bara visa antingen 0 eller 1 ).

Här är ett grundläggande exempel där vi helt enkelt skriver ut Giltigt datum eller Ogiltigt datum , beroende på om returvärdet är 1 eller 0 :

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

Resultat:

Valid Date

Exempel 4 – Dina SPRÅKinställningar

Returvärdet för ISDATE() beror på ditt LANGUAGE och DATEFORMAT inställningar.

Här är ett exempel för att visa hur samma värde kan ge olika resultat beroende på LANGUAGE inställning som används.

brittisk

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_english

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

Detta beror på att British använder dd/MM/åååå format medan us_english använder MM/dd/ååå .

Exempel 5 – Dina inställningar för DATUMFORMAT

Som nämnts, returvärdet för ISDATE() beror också på ditt DATEFORMAT inställningar.

Här är ett exempel för att visa hur samma värde kan returnera olika resultat beroende på DATEFORMAT inställning som används.

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. Rangordna funktion i MySQL med Order By-klausul

  2. Hur exporterar jag frågeresultat till Excel i Oracle SQL Developer?

  3. Inloggningsflöde i R12.2 och grundläggande felsökning

  4. Patchpolicy