Delen via


ISDATE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database in Microsoft Fabric

Geeft 1 terug als de expressie een geldige datetimewaarde heeft; anders 0.

ISDATE geeft 0 als de uitdrukking een datetime2-waarde heeft.

Zie datum- en tijdgegevenstypen en -functies (Transact-SQL)voor een overzicht van alle Transact-SQL datum- en tijdgegevenstypen en -functies. Let op dat het bereik voor datum-tijdgegevens ligt van 1753-01-01 tot en met 9999-12-31, terwijl het bereik voor datumgegevens 0001-01-01 tot en met 9999-12-31 ligt.

Transact-SQL syntaxis-conventies

Syntaxis

ISDATE ( expression )

Arguments

expressie
Is een tekenstring of expressie die kan worden omgezet in een tekenstring. De uitdrukking mag minder dan 4.000 tekens zijn. Datum- en tijdgegevenstypen, behalve datetime en smalldatetime, zijn niet toegestaan als argument voor ISDATE.

Retourtype

int

Opmerkingen

ISDATE is deterministisch alleen als je het gebruikt met de CONVERT-functie , als de CONVERT-stijlparameter is opgegeven en stijl niet gelijk is aan 0, 100, 9 of 109.

De retourwaarde van ISDATE hangt af van de instellingen die zijn ingesteld door SET DATEFORMAT, SET LANGUAGE en Configure the default language Server Configuration Option.

ISDATE-expressieformaten

Voor voorbeelden van geldige formaten waarvoor ISDATE 1 teruggeeft, zie de sectie "Supported String Literal Formats for datetime" in de datetime - en smalldatetime-onderwerpen . Voor aanvullende voorbeelden, zie ook de kolom Input/Output in de sectie "Arguments" van CAST and CONVERT.

De volgende tabel vat invoerexpressieformaten samen die niet geldig zijn en die 0 of een fout teruggeven.

ISDATE-expressie ISDATE rendementswaarde
NUL 0
Waarden van datatypes die in Data Types worden vermeld in elke datatypecategorie behalve tekenreeksen, Unicode-tekenreeksen of datum en tijd. 0
Waarden van tekst-, ntext- of afbeeldingsdatatypes . 0
Elke waarde die een secondenprecisieschaal groter dan 3 heeft, (.0000 tot .0000000...n). ISDATE geeft 0 terug als de expressie een datetime2-waarde heeft, maar geeft 1 terug als de expressie een geldige datetime-waarde is. 0
Elke waarde die een geldige datum met een ongeldige waarde mengt, bijvoorbeeld 1995-10-1a. 0

Voorbeelden

Eén. ISDATE gebruiken om te testen op een geldige datetime-expressie

Het volgende voorbeeld laat zien hoe je ISDATE kunt testen of een tekenreeks een geldige datumtijd is.

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

B. Het tonen van de effecten van de instellingen SET DATEFORMAT en SET LANGUAGE op retourwaarden

De volgende statements tonen de waarden die worden teruggegeven als gevolg van de instellingen van SET DATEFORMAT en 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;  

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

C. ISDATE gebruiken om te testen op een geldige datetime-expressie

Het volgende voorbeeld laat zien hoe je ISDATE kunt testen of een tekenreeks een geldige datumtijd is.

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

Zie ook

CAST en CONVERTEREN (Transact-SQL)