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