- 03/14/2017
- 3 minuten om te lezen
-
- c
- j
- r
- M
- i
-
+6
Geldt voor: SQL Server (alle ondersteunde versies) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Retourneert 1 als de expressie een geldige datum-, tijd- of datetime-waarde is; anders is de waarde 0.
ISDATE retourneert 0 als de expressie een datetime2-waarde is.
Voor een overzicht van alle Transact-SQL-datetime-datetime-datetime-datetime-typen en -functies, zie Date and Time Data Types and Functions (Transact-SQL). Merk op dat het bereik voor datetime-gegevens 1753-01-01 tot en met 9999-12-31 is, terwijl het bereik voor datumgegevens 0001-01-01 tot en met 9999-12-31 is.
Transact-SQL Syntax Conventions
Syntax
ISDATE ( expression )
Note
Om de Transact-SQL-syntaxis voor SQL Server 2014 en eerder te bekijken, raadpleegt u Vorige versies documentatie.
Arguments
expressie
Is een tekenreeks of expressie die kan worden geconverteerd naar een tekenreeks. De expressie moet minder dan 4.000 tekens bevatten. Gegevenstypen datum en tijd, behalve datetime en smalldatetime, zijn niet toegestaan als argument voor ISDATE.
Return Type
int
Remarks
ISDATE is alleen deterministisch als u deze gebruikt met de functie CONVERT, als de parameter CONVERT-stijl is opgegeven, en stijl niet gelijk is aan 0, 100, 9 of 109.
De retourwaarde van ISDATE is afhankelijk van de instellingen die zijn ingesteld met SET DATEFORMAT, SET LANGUAGE en Configureer de standaardtaal Server Configuration Option.
ISDATE expressieformaten
Voor voorbeelden van geldige formaten waarvoor ISDATE een 1 zal retourneren, zie de sectie “Supported String Literal Formats for datetime” in de onderwerpen datetime en smalldatetime. Zie voor aanvullende voorbeelden ook de kolom Invoer/uitvoer van de sectie “Argumenten” van CAST en CONVERT.
De volgende tabel geeft een overzicht van invoerexpressie-indelingen die niet geldig zijn en die een 0 of een fout teruggeven.
ISDATE expressie | ISDATE retourwaarde |
---|---|
NULL | 0 |
Waarden van gegevenstypen vermeld in Gegevenstypen in een gegevenstypecategorie anders dan tekenreeksen, Unicode-tekenreeksen, of datum en tijd. | 0 |
Waarden van tekst-, ntext-, of afbeeldingsdatatypen. | 0 |
Elke waarde die een secundaire precisieschaal heeft groter dan 3, (.0000 tot .0000000…n). ISDATE zal 0 teruggeven als de uitdrukking een datetime2 waarde is, maar zal 1 teruggeven als de uitdrukking een geldige datetime waarde is. | 0 |
Elke waarde die een geldige datum mengt met een ongeldige waarde, bijvoorbeeld 1995-10-1a. | 0 |
Voorbeelden
A. ISDATE gebruiken om te testen op een geldige datetime expressie
Het volgende voorbeeld laat zien hoe u ISDATE
kunt gebruiken om te testen of een tekenreeks een geldige datetime is.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. De effecten tonen van de SET DATEFORMAT en SET LANGUAGE instellingen op retourwaarden
De volgende verklaringen tonen de waarden die worden geretourneerd 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 en Parallel Data Warehouse
C. ISDATE gebruiken om te testen op een geldige datetime expressie
Het volgende voorbeeld laat zien hoe u ISDATE
kunt gebruiken om te testen of een tekenreeks een geldige datetime is.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Zie ook
CAST en CONVERT (Transact-SQL)