- 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)