Partilhar via


ISDATE (Transact-SQL)

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

Para obter uma visão geral de todos os tipos de dados de data e hora e funções do Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

ISDATE ( expression )

Argumentos

  • expression
    É uma cadeia de caracteres ou expressão que pode ser convertida a uma cadeia de caracteres. A expressão deve ter menos de 4.000 caracteres.

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 pela opção de idioma padrão. 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 literais de cadeia de caracteres com suporte para datetime" nos tópicos datetime e smalldatetime. Para obter outros exemplos, consulte também a coluna Entrada/Saída da seção "Argumentos" de CAST e 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)

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