ISDATE (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Retornará 1 se a expressão for um valor datetime, válido; caso contrário, 0.

ISDATE retornará 0 se a expressão for um valor datetime2.

Para ter uma visão geral de todas as funções e tipos de dados de data e hora do Transact-SQL, confira Funções e tipos de dados 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.

Convenções de sintaxe de Transact-SQL

Sintaxe

ISDATE ( expression )

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

expressão
É 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 será determinista apenas 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 retornado de ISDATE depende das configurações definidas por SET DATEFORMAT, SET LANGUAGE e Configurar idioma padrão da opção de configuração de servidor.

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 compatíveis com 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
NULO 0
Valores de tipos de dados listados em Tipos de dados em qualquer categoria de tipo de dados que não cadeias de caracteres, cadeias de caracteres Unicode ou data e hora. 0
Valores de 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 expressão for um valor datetime2, mas retornará 1 se a expressão 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 é uma datatime válida.

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;  

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

C. 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 é uma datatime válida.

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

Consulte Também

CAST e CONVERT (Transact-SQL)