Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ISDATE() Примери в SQL Server

В SQL Server можете да използвате ISDATE() функция за проверка дали дадена стойност е валидна дата.

За да бъдем по-конкретни, тази функция проверява само дали стойността е валидна датавреме или дата и час стойност, но не datetime2 стойност. Ако предоставите datetime2 стойност, ISDATE() ще ви каже, че не е дата (ще върне 0 ).

Тази статия съдържа примери за тази функция.

Синтаксис

Първо, ето синтаксиса:

ISDATE ( expression )

Където expression е изразът, който трябва да се тества.

Пример 1 – Валидна дата

Ето пример за използване на валиден израз:

SELECT ISDATE('2000-01-01') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Това връща 1 , което означава, че е валидна датавреме или дата и час стойност.

Пример 2 – Невалидна дата

Ето пример с невалиден израз:

SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Това връща 0 , което означава, че не е валидна датавреме или дата и час стойност.

Пример 3 – Използване на връщаната стойност

Можете да използвате условен израз, за ​​да използвате връщаната стойност (вместо просто да показвате 0 или 1 ).

Ето един основен пример, в който просто отпечатваме Валидна дата или Невалидна дата , в зависимост от това дали връщаната стойност е 1 или 0 :

IF ISDATE('2000-01-01') = 1  
    PRINT 'Valid Date'  
ELSE  
    PRINT 'Invalid Date';

Резултат:

Valid Date

Пример 4 – Вашите настройки за ЕЗИК

Връщаната стойност на ISDATE() зависи от вашия LANGUAGE и DATEFORMAT настройки.

Ето пример, за да демонстрирате как една и съща стойност може да върне различни резултати в зависимост от LANGUAGE използвана настройка.

Британски

SET LANGUAGE British;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';

Резултат:

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';

Резултат:

Changed language setting to us_english.
+----------------------------+
| 20/01/2000 in us_english   |
|----------------------------|
| 0                          |
+----------------------------+

Това се случва, защото British използва дд/мм/гггг формат, докато us_english използва MM/dd/yyy .

Пример 5 – Вашите настройки на DATEFORMAT

Както споменахме, връщаната стойност на ISDATE() също зависи от вашия DATEFORMAT настройки.

Ето пример, за да демонстрирате как една и съща стойност може да върне различни резултати в зависимост от DATEFORMAT използвана настройка.

dmy

SET DATEFORMAT dmy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';

Резултат:

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

Резултат:

+--------------------------------------+
| 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. Намерете, приоритизирайте и разрешите проблеми със SQL сървъра за минути

  2. Замяна на множество символи в низ в SQL Server (T-SQL)

  3. 3 начина за извличане на годината от дата в SQL Server (T-SQL)

  4. Идентификаторът от няколко части не можа да бъде обвързан

  5. Как да промените поредния номер на пощенски акаунт в база данни в профил в SQL Server (T-SQL)