Функция SQL Server ISDATE

В этом руководстве вы узнаете, как использовать функцию SQL Server ISDATE() для проверки того, является ли значение допустимым типом DATE, TIME или DATETIME.

Введение в функцию SQL Server ISDATE()

Функция ISDATE() принимает аргумент и возвращает 1, если этот аргумент является допустимым значением DATE, TIME или DATETIME; в противном случае она возвращает 0.

ISDATE(expression)

Выражение представляет собой строку символов или выражение, которое может быть преобразовано в строку символов. Его длина должна быть меньше 4000 символов.

Выражение может также быть значением DATE или TIME, но не может быть значением типа DATETIME или SMALLDATETIME.

Если выражение представляет собой значение DATETIME2, функция возвращает 0.

Обратите внимание, что диапазон данных DATETIME составляет от 1753-01-01 до 9999-12-31, а диапазон данных DATE составляет от 0001-01-01 до 9999-12-31.

Примеры функции SQL Server ISDATE()

Давайте рассмотрим несколько примеров использования функции ISDATE().

Использование функции ISDATE() для проверки допустимого выражения даты

В этом примере функция ISDATE() используется для проверки того, является ли строка допустимыми данными DATE:

SELECT 
    ISDATE('2020-06-15') is_date

Вот что получилось:

is_date
-----------
1
(1 row affected)

Посмотрите этот пример:

SELECT 
    ISDATE('2020-15-06') is_date

Вывод:

is_date
-----------
0
(1 row affected)

Эта функция ISDATE() зависит от SET DATEFORMAT, SET LANGUAGE и языка по умолчанию SQL Server.

Чтобы просмотреть текущие настройки, выполните следующую команду:

DBCC useroptions

Текущая настройка языка — us_english. Если вы измените язык на британский:

SET LANGUAGE british;

Тогда ISDATE() вернет другой результат для следующего примера:

SELECT 
    ISDATE('2020-15-06') is_date

Строка «2020-15-06» теперь считается допустимой датой:

is_date
-----------
1
(1 row affected)        

Использование функции ISDATE() для проверки допустимого выражения даты и времени

В следующем примере функция ISDATE() используется для проверки того, является ли выражение допустимым значением DATETIME:

SELECT 
    ISDATE('2020-12-05 11:20:30') is_date

Вот что получилось:

is_date
-----------
1
(1 row affected)

В этом руководстве вы узнали, как использовать функцию SQL Server ISDATE() для проверки того, является ли выражение допустимым значением DATE, TIME или DATETIME.

Мирослав С.

Автор статей, ИБ-специалист