ISDATE (Transact-SQL)

  • 14/03/2017
  • 3 minutter at læse
    • c
    • j
    • r
    • M
    • i
    • +6

Gælder for: SQL Server (alle understøttede versioner) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Returnerer 1, hvis udtrykket er en gyldig dato-, klokkeslæt- eller datotidsværdi; ellers 0.

ISDATE returnerer 0, hvis udtrykket er en datetime2-værdi.

For at få en oversigt over alle Transact-SQL-datatyper og -funktioner for dato og tid, se Datatyper og -funktioner for dato og tid (Transact-SQL). Bemærk, at intervallet for datotidsdata er 1753-01-01-01 til 9999-12-31, mens intervallet for datodata er 0001-01-01-01 til 9999-12-31.

Transact-SQL-syntaks-konventioner

Syntaks

ISDATE ( expression )

Note

For at få vist Transact-SQL-syntaks for SQL Server 2014 og tidligere skal du se Dokumentation for tidligere versioner.

Argumenter

udtryk
Er en tegnstreng eller et udtryk, der kan konverteres til en tegnstreng. Udtrykket skal være mindre end 4.000 tegn. Datatyper for dato og tid, undtagen datetime og smalldatetime, er ikke tilladt som argument for ISDATE.

Returneringstype

int

Bemærkninger

ISDATE er kun deterministisk, hvis du bruger den sammen med funktionen CONVERT, hvis parameteren CONVERT style er angivet, og style ikke er lig med 0, 100, 9 eller 109.

Returværdien af ISDATE afhænger af de indstillinger, der er angivet med SET DATEFORMAT, SET LANGUAGE og Konfigurer standardsproget Serverkonfigurationsoption.

ISDATE-udtrykket Formater

For eksempler på gyldige formater, for hvilke ISDATE returnerer 1, henvises til afsnittet “Understøttede strenglitterære formater for datetime” i emnerne datetime og smalldatetime. Du kan også se yderligere eksempler i kolonnen Input/Output i afsnittet “Argumenter” i CAST og CONVERT.

Den følgende tabel opsummerer formater for inputudtryk, der ikke er gyldige, og som returnerer 0 eller en fejl.

ISDATE-udtryk ISDATE-returværdi
NULL 0
Værdier af datatyper, der er anført i Datatyper i enhver anden datatypekategori end tegnstrenge, Unicode-tegnstrenge eller dato og tid. 0
Værdier af tekst-, ntekst- eller billeddatatyper. 0
Alle værdier, der har en skala for præcision i sekunder, der er større end 3, (.0000 til .0000000….n). ISDATE returnerer 0, hvis udtrykket er en datetime2-værdi, men returnerer 1, hvis udtrykket er en gyldig datetime-værdi. 0
En hvilken som helst værdi, der blander en gyldig dato med en ugyldig værdi, f.eks. 1995-10-1a. 0

Eksempler

A. Brug af ISDATE til at teste for et gyldigt datotidsudtryk

Det følgende eksempel viser, hvordan du kan bruge ISDATE til at teste, om en tegnstreng er et gyldigt datotidsudtryk.

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

B. Visning af virkningerne af indstillingerne SET DATEFORMAT og SET LANGUAGE på returværdier

De følgende udsagn viser de værdier, der returneres som følge af indstillingerne for SET DATEFORMAT og 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; 

Eksempler: Azure Synapse Analytics og Parallel Data Warehouse

C. Brug af ISDATE til at teste for et gyldigt datotidsudtryk

Det følgende eksempel viser, hvordan du kan bruge ISDATE til at teste, om en tegnstreng er et gyldigt datotidsudtryk.

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

Se også

CAST og CONVERT (Transact-SQL)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.