ISDATE (Transact-SQL)
Возвращает 1, если expression является действительным значением date, time или datetime. В противном случае возвращает 0.
Общие сведения обо всех типах данных и функций даты и времени в языке 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;