ISDATE (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Returnerar 1 om uttrycket är ett giltigt datumtidsvärde ; annars 0.

ISDATE returnerar 0 om uttrycket är ett datetime2-värde .

En översikt över alla datatyper och funktioner för datum och tid Transact-SQL finns i Datatyper och funktioner för datum och tid (Transact-SQL). Observera att intervallet för datumdata är 1753-01-01 till 9999-12-31, medan intervallet för datumdata är 0001-01-01 till 9999-12-31.

Transact-SQL syntaxkonventioner

Syntax

ISDATE ( expression )

Arguments

uttryck
Är en teckensträng eller ett uttryck som kan konverteras till en teckensträng. Uttrycket måste vara mindre än 4 000 tecken. Datatyper av datum och tid, förutom datetime och smalldatetime, tillåts inte som argument för ISDATE.

Returtyp

int

Anmärkningar

ISDATE är deterministisk endast om du använder den med funktionen CONVERT, om stilparametern CONVERT är specificerad och style inte är lika med 0, 100, 9 eller 109.

Returvärdet för ISDATE beror på inställningarna som sätts av SET DATEFORMAT,SET LANGUAGE och Configure the default language Server Configuration Option.

ISDATE-uttrycksformat

För exempel på giltiga format där ISDATE returnerar 1, se avsnittet "Supported String Literal Formats for datetime" i ämnena datetime och smalldatetime . För ytterligare exempel, se även kolumnen Input/Output i avsnittet "Argument" i CAST and CONVERT.

Följande tabell sammanfattar indatauttrycksformat som inte är giltiga och som ger 0 eller ett fel.

ISDATUTTRYCK ISDATE-avkastningsvärde
NOLL 0
Värden på datatyper listade i Datatyper i vilken datatypkategori som helst förutom teckensträngar, Unicode-teckensträngar eller datum och tid. 0
Värden för text-, ntext- eller bilddatatyper . 0
Alla värden som har en sekundprecisionsskala större än 3, (.0000 till .0000000...n). ISDATUM returnerar 0 om uttrycket är ett datetime2-värde , men returnerar 1 om uttrycket är ett giltigt datetime-värde . 0
Alla värden som blandar ett giltigt datum med ett ogiltigt värde, till exempel 1995-10-1a. 0

Examples

A. Att använda ISDATE för att testa för ett giltigt datumtidsuttryck

Följande exempel visar hur du kan testa ISDATE om en teckensträng är en giltig datetime.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    PRINT 'VALID'  
ELSE  
    PRINT 'INVALID';  

B. Visar effekterna av inställningarna SET DATEFORMAT och SET LANGUAGE på returvärden

Följande satser visar de värden som returneras som ett resultat av inställningarna av SET DATEFORMAT och SET LANGUAGE.

/* Use these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  
/* Expression in mdy dateformat */  
SELECT ISDATE('04/15/2008'); --Returns 1.  
/* Expression in mdy dateformat */  
SELECT ISDATE('04-15-2008'); --Returns 1.   
/* Expression in mdy dateformat */  
SELECT ISDATE('04.15.2008'); --Returns 1.   
/* Expression in myd  dateformat */  
SELECT ISDATE('04/2008/15'); --Returns 1.  
  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET DATEFORMAT dmy;  
SELECT ISDATE('15/04/2008'); --Returns 1.  
SET DATEFORMAT dym;  
SELECT ISDATE('15/2008/04'); --Returns 1.  
SET DATEFORMAT ydm;  
SELECT ISDATE('2008/15/04'); --Returns 1.  
SET DATEFORMAT ymd;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET LANGUAGE English;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET LANGUAGE Hungarian;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET LANGUAGE Swedish;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET LANGUAGE Italian;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
/* Return to these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Att använda ISDATE för att testa för ett giltigt datumtidsuttryck

Följande exempel visar hur du kan testa ISDATE om en teckensträng är en giltig datetime.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

Se även

CAST och CONVERT (Transact-SQL)