- 03/14/2017
- 3 minuter att läsa
-
- c
- j
- r
- M
- i
-
+6
Gäller: SQL Server (alla versioner som stöds) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Returnerar 1 om uttrycket är ett giltigt datum-, tids- eller datumtidsvärde, annars 0.
ISDATE returnerar 0 om uttrycket är ett datetime2-värde.
För en översikt över alla Transact-SQL-datatyper och datafunktioner för datum och tid, se Datatyper och datafunktioner för datum och tid (Transact-SQL). Observera att intervallet för datumtidsdata är 1753-01-01-01 till 9999-12-31, medan intervallet för datumdata är 0001-01-01-01 till 9999-12-31.
Transact-SQL syntaxkonventioner
Syntax
ISDATE ( expression )
Notera
Om du vill visa Transact-SQL-syntaxen för SQL Server 2014 och tidigare versioner, se Dokumentation för tidigare versioner.
Argument
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 för datum och tid, utom datetime och smalldatetime, är inte tillåtna som argument för ISDATE.
Returneringstyp
int
Märkningar
ISDATE är deterministisk endast om du använder den tillsammans med CONVERT-funktionen, om CONVERT-stilparametern är angiven och stil inte är lika med 0, 100, 9 eller 109.
Returvärdet för ISDATE beror på de inställningar som anges med SET DATEFORMAT, SET LANGUAGE och Konfigurera standardspråket Serverkonfigurationsalternativet.
ISDATE-uttrycksformat
Exempel på giltiga format för vilka ISDATE returnerar 1 finns i avsnittet ”Stödda stränglitterära format för datetime” i ämnena datetime och smalldatetime. Ytterligare exempel finns i kolumnen Input/Output i avsnittet ”Arguments” i CAST och CONVERT.
I följande tabell sammanfattas format för inmatningsuttryck som inte är giltiga och som returnerar 0 eller ett fel.
ISDATE-uttryck | ISDATE-returvärde |
---|---|
NULL | 0 |
Värden för de datatyper som förtecknas i Datatyper i någon annan kategori av datatyper än teckensträngar, Unicode-teckensträngar eller datum och tid. | 0 |
Värden av datatyperna text, ntext eller bild. | 0 |
Varje värde som har en skala för sekundprecision som är större än 3, (.0000 till .0000000…n). ISDATE returnerar 0 om uttrycket är ett datetime2-värde, men returnerar 1 om uttrycket är ett giltigt datetime-värde. | 0 |
Varje värde som blandar ett giltigt datum med ett ogiltigt värde, till exempel 1995-10-1a. | 0 |
Exempel
A. Användning av ISDATE för att testa ett giltigt datumtidsuttryck
Följande exempel visar hur du använder ISDATE
för att testa om en teckensträng är ett giltigt datumtidsuttryck.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Visa effekterna av inställningarna SET DATEFORMAT och SET LANGUAGE på returvärden
Följande uttalanden visar de värden som returneras som ett resultat av inställningarna för 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 och Parallel Data Warehouse
C. Användning av ISDATE för att testa ett giltigt datumtidsuttryck
Följande exempel visar hur du använder ISDATE
för att testa om en teckensträng är en giltig datumtid.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Visa också
CAST och CONVERT (Transact-SQL)
.