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


ISDATE (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Возвращает значение 1, если аргумент expression имеет допустимое значение типа datetime; в противном случае возвращает значение 0.

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

Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL). Обратите внимание на то, что диапазоном для данных типа datetime являются значения от 1753-01-01 до 9999-12-31, в то время как диапазоном для данных даты являются значения от 0001-01-01 до 9999-12-31.

Соглашения о синтаксисе Transact-SQL

Синтаксис

ISDATE ( 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. Дополнительные примеры см. также в столбце "Ввод/Вывод" раздела "Аргументы" функций 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';  

B. Влияние настроек 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;  

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

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

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

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

См. также

CAST и CONVERT (Transact-SQL)