Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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';