Поделиться через


ISDATE (Transact-SQL)

Возвращает 1, если expression является действительным значением date, time или datetime. В противном случае возвращает 0.

Функция ISDATE возвращает 0, если expression является значением datetime2.

Общие сведения обо всех типах данных и функциях даты и времени в языке Transact-SQL см. в разделе Типы данных и функции даты и времени (Transact-SQL). Обратите внимание, что диапазон значений типа datetime — от 01.01.1753 до 31.12.9999, а диапазон для date — от 01.01.0001 до 31.12.9999.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

ISDATE ( expression )

Аргументы

  • expression
    Символьная строка или выражение, которое можно преобразовать в символьную строку. Выражение должно включать не более 4 000 символов. Типы данных даты и времени (за исключением типа datetime и smalldatetime), не разрешены к использованию в качестве аргумента функции ISDATE.

Возвращаемый тип

int

Замечания

Функция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.

Возвращаемое значение ISDATE зависит от значений параметров SET DATEFORMAT, SET LANGUAGE и Настройка параметра конфигурации сервера «язык по умолчанию». Примеры см. в разделе Пример В.

Форматы выражения ISDATE

Примеры допустимых форматов, для которых функция ISDATE возвращает 1, см. в разделе «Поддерживаемые форматы строковых литералов для типа данных datetime» в разделах datetime и smalldatetime. Дополнительные примеры см. также в столбце Input/Output раздела «Аргументы» описаний функций CAST и CONVERT.

В следующей таблице приводятся недопустимые форматы входных выражений, для которых возвращается 0 или ошибка.

ISDATE, выражение

Возвращенное значение ISDATE

NULL

0

Значения типов данных, приведенные в списке Типы данных, в любой категории типов данных, кроме символьных строк, символьных строк в Юникоде и даты и времени.

0

Значения типов данных text, ntext или image

0

Любое значение, имеющее более трех позиций долей секунды (от 0,0000 до 0,0000000... n). Функция ISDATE возвращает 0, если expression имеет значение datetime2, и возвращает 1, если expression является допустимым значением datetime.

0

Любое значение, сочетающее допустимую дату с недопустимым значением, например 1995-10-1a.

0

Примеры

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

Следующий пример показывает, как проверить с помощью функции ISDATE, является ли символьная строка допустимым значением datetime.

IF ISDATE('2009-05-12 10:19:41.177') = 1
    PRINT 'VALID'
ELSE
    PRINT 'INVALID';

Б.Влияние настроек SET DATEFORMAT и SET LANGUAGE на возвращаемые значения

Следующие инструкции возвращают значения, зависящие от настроек SET DATEFORMAT и SET LANGUAGE.

/* Use these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
/* Expression in mdy dateformat */
SELECT ISDATE('04/15/2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04-15-2008'); --Returns 1. 
/* Expression in mdy dateformat */
SELECT ISDATE('04.15.2008'); --Returns 1. 
/* Expression in myd  dateformat */
SELECT ISDATE('04/2008/15'); --Returns 1.

SET DATEFORMAT mdy;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/04/15'); --Returns 1.

SET DATEFORMAT dmy;
SELECT ISDATE('15/04/2008'); --Returns 1.
SET DATEFORMAT dym;
SELECT ISDATE('15/2008/04'); --Returns 1.
SET DATEFORMAT ydm;
SELECT ISDATE('2008/15/04'); --Returns 1.
SET DATEFORMAT ymd;
SELECT ISDATE('2008/04/15'); --Returns 1.

SET LANGUAGE English;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET LANGUAGE Hungarian;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET LANGUAGE Swedish;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET LANGUAGE Italian;
SELECT ISDATE('2008/04/15'); --Returns 1.

/* Return to these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;

См. также

Справочник

Функции CAST и CONVERT (Transact-SQL)