V SQL Server můžete použít ISDATE()
funkce pro kontrolu, zda je hodnota platným datem.
Abychom byli konkrétnější, tato funkce pouze kontroluje, zda je hodnota platné datum , čas nebo datum a čas hodnotu, ale ne datetime2 hodnota. Pokud zadáte datetime2 hodnota, ISDATE()
vám řekne, že to není datum (vrátí 0
).
Tento článek obsahuje příklady této funkce.
Syntaxe
Nejprve je zde syntaxe:
ISDATE ( expression )
Kde expression
je výraz, který má být testován.
Příklad 1 – Datum platnosti
Zde je příklad použití platného výrazu:
SELECT ISDATE('2000-01-01') AS Result;
Výsledek:
+----------+ | Result | |----------| | 1 | +----------+
To vrátí 1
, což znamená, že se jedná o platné datum , čas nebo datum a čas hodnotu.
Příklad 2 – Neplatné datum
Zde je příklad s neplatným výrazem:
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
Výsledek:
+----------+ | Result | |----------| | 0 | +----------+
To vrátí 0
, což znamená, že to není platné datum , čas nebo datum a čas hodnotu.
Příklad 3 – Použití návratové hodnoty
K využití návratové hodnoty můžete použít podmíněný příkaz (spíše než jednoduše zobrazit buď 0
nebo 1
).
Zde je základní příklad, kdy jednoduše vytiskneme Platné datum nebo Neplatné datum v závislosti na tom, zda je návratová hodnota 1
nebo 0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
Výsledek:
Valid Date
Příklad 4 – Nastavení vašeho JAZYKA
Vrácená hodnota ISDATE()
závisí na vašem LANGUAGE
a DATEFORMAT
nastavení.
Zde je příklad, který ukazuje, jak může stejná hodnota vrátit různé výsledky v závislosti na LANGUAGE
použité nastavení.
Britové
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
Výsledek:
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';
Výsledek:
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
To se děje, protože British
používá dd/MM/rrrr formát, zatímco us_english
používá MM/dd/rrrr .
Příklad 5 – Nastavení FORMÁTU DATA
Jak již bylo zmíněno, vrácená hodnota ISDATE()
závisí také na vašem DATEFORMAT
nastavení.
Zde je příklad demonstrující, jak může stejná hodnota vrátit různé výsledky v závislosti na DATEFORMAT
použité nastavení.
dmy
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
Výsledek:
+--------------------------------------+ | 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';
Výsledek:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+