Partilhar via


ISDATE (Transact-SQL)

Retornará 1 se a expression for um valor date, time ou datetime válido; caso contrário, 0.

ISDATE retorna 0 se expression for um valor datetime2.

Para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL). Observe que o intervalo de dados de data/hora será 1753-01-01 a 9999-12-31, quando o intervalo de dados de data for 0001-01-01 a 9999-12-31.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

ISDATE ( expression )

Argumentos

  • expression
    É uma cadeia de caracteres ou expressão que pode ser convertida em cadeia de caracteres. A expressão deve ter menos de 4.000 caracteres. Os tipos de dados de data e hora, exceto datetime e smalldatetime, não são permitidos como o argumento para ISDATE.

Tipo de retorno

int

Comentários

ISDATE só será determinista se você usá-lo com a função CONVERT, se o parâmetro de estilo CONVERT for especificado e o estilo não for igual a 0, 100, 9 ou 109.

O valor de retorno de ISDATE depende das configurações definidas por SET DATEFORMAT, SET LANGUAGE e Configurar opção default language de configuração de servidor. Para obter exemplos, consulte exemplo C.

Formatos de expressão ISDATE

Para obter exemplos de formatos válidos para os quais ISDATE retornará 1, consulte a seção "Formatos de literal de cadeia de caracteres suportados para datetime" nos tópicos datetime e smalldatetime. Para obter outros exemplos, consulte também a coluna Input/Output da seção "Argumentos" de CAST and CONVERT.

A tabela a seguir resume os formatos de expressão de entrada que não são válidos e retornam 0 ou um erro.

Expressão ISDATE

Valor de retorno ISDATE

NULL

0

Valores de tipos de dados listados em Tipos de dados em qualquer categoria de tipo de dados que não sejam cadeias de caracteres, cadeias de caracteres Unicode ou data e hora.

0

Valores dos tipos de dados text, ntext ou image.

0

Qualquer valor que tenha uma escala de precisão de segundos maior que 3 (.0000 a .0000000... n). ISDATE retornará 0 se a expression for um valor datetime2, mas retornará 1 se a expression for um valor datetime válido.

0

Qualquer valor que combine uma data válida com um valor inválido, por exemplo 1995-10-1a.

0

Exemplos

A.Usando ISDATE para testar uma expressão datetime válida

O exemplo a seguir mostra como usar ISDATE para testar se uma cadeia de caracteres é um datetimeválido.

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

B.Mostrando os efeitos das configurações SET DATEFORMAT e SET LANGUAGE em valores de retorno

As instruções a seguir mostram os valores retornados como resultado das configurações de SET DATEFORMAT e 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;

Consulte também

Referência

CAST e CONVERT (Transact-SQL)