W SQL Server możesz użyć ISDATE()
funkcja sprawdzająca, czy wartość jest poprawną datą.
Mówiąc dokładniej, ta funkcja sprawdza tylko, czy wartość jest prawidłową datą , czas lub data i godzina wartość, ale nie datetime2 wartość. Jeśli podasz datetime2 wartość, ISDATE()
powie, że to nie jest data (zwróci 0
).
Ten artykuł zawiera przykłady tej funkcji.
Składnia
Po pierwsze, oto składnia:
ISDATE ( expression )
Gdzie expression
to wyrażenie do przetestowania.
Przykład 1 – prawidłowa data
Oto przykład z użyciem prawidłowego wyrażenia:
SELECT ISDATE('2000-01-01') AS Result;
Wynik:
+----------+ | Result | |----------| | 1 | +----------+
Zwraca 1
, co oznacza, że jest to prawidłowa data , czas lub data i godzina wartość.
Przykład 2 – Nieprawidłowa data
Oto przykład z nieprawidłowym wyrażeniem:
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
Wynik:
+----------+ | Result | |----------| | 0 | +----------+
Zwraca 0
, co oznacza, że nie jest to prawidłowa data , czas lub data i godzina wartość.
Przykład 3 – Korzystanie ze zwracanej wartości
Możesz użyć instrukcji warunkowej, aby skorzystać ze zwracanej wartości (zamiast wyświetlać tylko 0
lub 1
).
Oto prosty przykład, w którym po prostu wypisujemy Ważną datę lub Nieprawidłowa data , w zależności od tego, czy zwracana wartość to 1
lub 0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
Wynik:
Valid Date
Przykład 4 – Twoje ustawienia JĘZYKA
Zwracana wartość ISDATE()
zależy od Twojego LANGUAGE
i DATEFORMAT
ustawienia.
Oto przykład pokazujący, jak ta sama wartość może zwrócić różne wyniki w zależności od LANGUAGE
używane ustawienie.
Brytyjski
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
Wynik:
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';
Wynik:
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
Dzieje się tak, ponieważ British
używa dd/MM/rrrr sformatuj podczas us_english
używa MM/dd/rrrr .
Przykład 5 – Twoje ustawienia DATEFORMAT
Jak wspomniano, wartość zwracana przez ISDATE()
zależy również od Twojego DATEFORMAT
ustawienia.
Oto przykład pokazujący, jak ta sama wartość może zwrócić różne wyniki w zależności od DATEFORMAT
używane ustawienie.
mój
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
Wynik:
+--------------------------------------+ | 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';
Wynik:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+