ISDATE (Transact-SQL)

  • 03/14/2017
  • 3 minutes to read
    • c
    • j
    • r
    • M
    • i
    • +6

Käytetään: SQL Server (kaikki tuetut versiot) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Palauttaa 1, jos lauseke on kelvollinen päivämäärän, kellonajan tai datetime-arvon arvo, muuten 0.

ISDATE palauttaa 0, jos lauseke on datetime2-arvo.

Yleiskatsaus kaikkiin Transact-SQL:n päivämäärän ja kellonajan tietotyyppeihin ja funktioihin on kohdassa Päivämäärän ja kellonajan tietotyypit ja funktiot (Transact-SQL). Huomaa, että datetime-tietojen vaihteluväli on 1753-01-01 – 9999-12-31, kun taas päivämäärätietojen vaihteluväli on 0001-01-01 – 9999-12-31.

Transact-SQL-syntaksikonventiot

Syntaksi

ISDATE ( expression )

Huomautus

Katso SQL Server 2014:n ja sitä aikaisempien SQL Server 2014:n ja sitä aikaisempien SQL Serverin versioiden Transact-SQL-syntaksin tarkastelemista varten lisätietoja kohdasta Aikaisemmat versiot -dokumentointi.

Arguments

expression
On merkkijono tai lauseke, joka voidaan muuntaa merkkijonoksi. Lausekkeen on oltava alle 4000 merkkiä. Päivämäärä- ja aikatietotyyppejä, lukuun ottamatta datetime- ja smalldatetime-tietotyyppejä, ei sallita ISDATE:n argumenttina.

Palautustyyppi

int

Huomautukset

ISDATE on deterministinen vain, jos sitä käytetään CONVERT-funktion kanssa, jos CONVERT style-parametriksi on määritetty tyyliparametri CONVERT eikä style ole yhtä suuri kuin 0, 100, 9, tai 109.

ISDATE:n paluuarvo riippuu asetuksista, jotka on määritetty SET DATEFORMAT-, SET LANGUAGE- ja Configure the default language Server Configuration Option -valinnoilla.

ISDATE-ilmaisun formaatit

Esimerkkejä kelvollisista formaateista, joiden kohdalla ISDATE palauttaa arvon 1, on datetime- ja smalldatetime-aiheiden kohdassa ”Tuetut merkkijonojen kirjainlyhenteiden formaatit datetime-ajankohdalle”. Lisää esimerkkejä on myös CAST- ja CONVERT-kohtien ”Arguments”-osion Input/Output-sarakkeessa.

Seuraavassa taulukossa on yhteenveto syöttölausemuodoista, jotka eivät ole kelvollisia ja jotka palauttavat 0 tai virheen.

ISDATE-lauseke ISDATE-paluuarvo
NULL 0
Kohdassa ”Tietotyypit” lueteltujen tietotyyppien arvot missä tahansa tietotyyppiluokassa, lukuun ottamatta merkkijoukkoja (character strings), Unicode-merkkijoukkoja (character strings) tai päivämäärää (date) ja kellonaikaa. 0
Teksti-, n-teksti- tai kuvatietotyyppien arvot. 0
Jokainen arvo, jonka sekuntitarkkuusasteikko on suurempi kuin 3, (.0000 kautta .0000000…n). ISDATE palauttaa 0, jos lauseke on datetime2-arvo, mutta palauttaa 1, jos lauseke on kelvollinen datetime-arvo. 0
Jokainen arvo, joka sekoittaa kelvollisen päivämäärän epäkelvolliseen arvoon, esimerkiksi 1995-10-1a. 0

Esimerkkejä

A. ISDATEn käyttäminen kelvollisen datetime-lausekkeen testaamiseen

Seuraavassa esimerkissä näytetään, miten ISDATE:n avulla voidaan testata, onko merkkijono kelvollinen datetime.

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

B. SET DATEFORMAT- ja SET LANGUAGE -asetusten vaikutusten näyttäminen palautusarvoihin

Seuraavissa lausekkeissa näytetään arvot, jotka palautetaan SET DATEFORMAT– ja SET LANGUAGE-asetusten seurauksena.

/* 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; 

Esimerkkejä: Azure Synapse Analytics ja Parallel Data Warehouse

C. ISDATE:n käyttäminen kelvollisen datetime-lausekkeen testaamiseen

Seuraavassa esimerkissä näytetään, miten ISDATE:n avulla voidaan testata, onko merkkijono kelvollinen datetime.

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

Katso myös

CAST ja CONVERT (Transact-SQL)

Vastaa

Sähköpostiosoitettasi ei julkaista.