Partilhar via


ISDATE (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Retorna 1 se a expressão for um valor de data-hora válido; caso contrário, 0.

O ISDATE retorna 0 se a expressão for um valor datetime2 .

Para obter uma visão geral de todos os tipos e funções de dados de data e hora Transact-SQL, consulte Tipos de dados e funções de data e hora (Transact-SQL). Note que o intervalo para dados data-horários é de 1753-01-01 a 9999-12-31, enquanto o intervalo para dados de data é 0001-01-01 a 9999-12-31.

Transact-SQL convenções de sintaxe

Sintaxe

ISDATE ( expression )

Arguments

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

Tipo de Retorno

int

Observações

O ISDATE é determinístico apenas se o usar 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 definições definidas por SET DATEFORMAT,SET LANGUAGE e Configure the default language Server Configuration Option.

Formatos de expressões ISDATE

Para exemplos de formatos válidos para os quais o ISDATE devolverá 1, consulte a secção "Formatos Literais de String Suportados para data-hora" nos tópicos datetime e smalldatetime . Para exemplos adicionais, veja também a coluna Entrada/Saída da secção "Argumentos" do CAST e CONVERT.

A tabela seguinte resume os formatos de expressões de entrada que não são válidos e que devolvem 0 ou um erro.

Expressão ISDATE Valor de retorno ISDATE
NULO 0
Valores dos 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 de texto, ntext ou tipos de dados de imagem . 0
Qualquer valor que tenha uma escala de precisão de segundos superior a 3, (.0000 a .0000000...n). O ISDATE devolverá 0 se a expressão for um valor datatime2 , mas retornará 1 se a expressão for um valor de data-hora válido. 0
Qualquer valor que misture uma data válida com um valor inválido, por exemplo 1995-10-1a. 0

Examples

A. Usar ISDATE para testar uma expressão de data-hora válida

O exemplo seguinte mostra-lhe como testar ISDATE se uma cadeia de caracteres é uma data-hora válida.

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

B. Mostrar os efeitos das definições SET DATEFORMAT e SET LANGUAGE nos valores de retorno

As seguintes instruções mostram os valores que são devolvidos como resultado das definiçõ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 and Analytics Platform System (PDW)

C. Usar ISDATE para testar uma expressão de data-hora válida

O exemplo seguinte mostra-lhe como testar ISDATE se uma cadeia de caracteres é uma data-hora válida.

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

Ver também

CAST e CONVERT (Transact-SQL)