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


ISDATE (Transact-SQL)

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

Общие сведения обо всех типах данных и функций даты и времени в языке Transact-SQL см. в разделе Типы данных и функции даты и времени (Transact-SQL). Дополнительные сведения и примеры, общие для типов данных и функций даты и времени, см. в разделе Использование данных даты и времени.

Значок ссылки на разделСоглашение о синтаксисе в Transact-SQL

Синтаксис

ISDATE ( expression )

Аргументы

  • expression
    Символьная строка или выражение, которое можно преобразовать в командную строку. Выражение должно включать не более 4 000 символов.

Тип возвращаемых данных

int

Замечания

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

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

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

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

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

ISDATE, выражение

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

NULL

0

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

0

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

0

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

0

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

0

Примеры

A. Использование функции 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;

См. также

Справочник