In SQL Server kunt u de ISDATE()
. gebruiken functie om te controleren of een waarde een geldige datum is.
Om specifieker te zijn, deze functie controleert alleen of de waarde een geldige datum . is , tijd , of datetime waarde, maar geen datetime2 waarde. Als u een datetime2 . opgeeft waarde, ISDATE()
zal je vertellen dat het geen datum is (het zal 0
opleveren) ).
Dit artikel bevat voorbeelden van deze functie.
Syntaxis
Ten eerste, hier is de syntaxis:
ISDATE ( expression )
Waar expression
is de uitdrukking die moet worden getest.
Voorbeeld 1 – Geldige datum
Hier is een voorbeeld waarin een geldige uitdrukking wordt gebruikt:
SELECT ISDATE('2000-01-01') AS Result;
Resultaat:
+----------+ | Result | |----------| | 1 | +----------+
Dit retourneert 1
, wat betekent dat het een geldige datum . is , tijd , of datetime waarde.
Voorbeeld 2 – Ongeldige datum
Hier is een voorbeeld met een ongeldige uitdrukking:
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
Resultaat:
+----------+ | Result | |----------| | 0 | +----------+
Dit retourneert 0
, wat betekent dat het geen geldige datum is , tijd , of datetime waarde.
Voorbeeld 3 – De retourwaarde gebruiken
U kunt een voorwaardelijke instructie gebruiken om gebruik te maken van de geretourneerde waarde (in plaats van eenvoudigweg 0
weer te geven of 1
).
Hier is een eenvoudig voorbeeld waarbij we gewoon Geldige datum afdrukken of Ongeldige datum , afhankelijk van of de retourwaarde 1
. is of 0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
Resultaat:
Valid Date
Voorbeeld 4 – Uw TAAL-instellingen
De retourwaarde van ISDATE()
hangt af van uw LANGUAGE
en DATEFORMAT
instellingen.
Hier is een voorbeeld om te demonstreren hoe dezelfde waarde verschillende resultaten kan opleveren, afhankelijk van de LANGUAGE
instelling gebruikt.
Brits
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
Resultaat:
Changed language setting to British. +-------------------------+ | 20/01/2000 in British | |-------------------------| | 1 | +-------------------------+
us_english
SET LANGUAGE us_english; SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';
Resultaat:
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
Dit gebeurt omdat British
gebruikt de dd/MM/jjjj formatteren terwijl us_english
gebruikt MM/dd/jjj .
Voorbeeld 5 – Uw DATEFORMAT-instellingen
Zoals vermeld, is de geretourneerde waarde van ISDATE()
hangt ook af van uw DATEFORMAT
instellingen.
Hier is een voorbeeld om te demonstreren hoe dezelfde waarde verschillende resultaten kan opleveren, afhankelijk van de DATEFORMAT
instelling gebruikt.
dmy
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
Resultaat:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is dmy | |--------------------------------------| | 1 | +--------------------------------------+
mdy
SET DATEFORMAT mdy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';
Resultaat:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+