sql >> Databáze >  >> RDS >> Sqlserver

ISDATE() Příklady v SQL Server

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


  1. SQL Server Sledování běžících dotazů

  2. Začínáme s Oracle SQL Developer na MacOSX

  3. Jak funguje funkce LOAD_FILE() v MySQL

  4. Převést „smalldatetime“ na „datetime“ v SQL Server (příklady T-SQL)