Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

ISDATE() Przykłady w SQL Server

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz domyślny profil publiczny dla poczty bazy danych w programie SQL Server (T-SQL)

  2. Jak używać SqlCommand do tworzenia bazy danych ze sparametryzowaną nazwą bazy danych?

  3. SQLServer IDENTITY Kolumna z tekstem

  4. Jak korzystać z UPDATE z SELECT w SQL Server

  5. Użyj SET TEXTSIZE, aby ograniczyć dane zwracane dla każdego wiersza w SQL Server