ISDATE (Transact-SQL)

  • 03/14/2017
  • 3 minutos para ler
    • c
    • j
    • r
    • M
    • i
    • +6

Candidata-se a: ServidorSQL (todas as versões suportadas) Base de dados SQL de Azure Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

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

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

Para uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, veja Tipos de dados e funções de data e hora (Transact-SQL). Observe que o intervalo para dados de data e hora é 1753-01-01 até 9999-12-31, enquanto o intervalo para dados de data é 0001-01-01 até 9999-12-31.

>

Convenções de sintaxe do Transact-SQL

Sintaxe

ISDATE ( expression )

Nota

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, veja a documentação das versões anteriores.

Argumentos

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

Return Type

int

Remarks

ISDATE é determinístico somente se você usá-lo com a função CONVERT, se o parâmetro CONVERT style for especificado e o estilo não for igual a 0, 100, 9, ou 109.

O valor de retorno do ISDATE depende das configurações definidas por SET DATEFORMAT, SET LANGUAGE e Configure o idioma padrão da opção de configuração do servidor.

ISDATE expression Formats

Para exemplos de formatos válidos para os quais o ISDATE retornará 1, veja a seção “Formatos literais de strings suportados para datatime” nos tópicos datetime e smallldatetime. Para exemplos adicionais, veja também a coluna Entrada/Saída da seção “Argumentos” do CAST e CONVERT.

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

Expressão de DATA Valor de retorno de DATA
NULL 0
Valores dos tipos de dados listados em Tipos de Dados em qualquer categoria de tipos de dados que não sejam cadeias de caracteres, cadeias de caracteres Unicode, ou data e hora. 0
Valores de tipos de dados de texto, texto ou imagem. 0
Um valor que tem uma escala de precisão de segundos maior que 3, (.0000 até .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
Any value that mixes a valid date with an invalid value, for example 1995-10-1a. 0

Exemplos

A. Usando ISDATE para testar uma expressão de data/hora válida

O exemplo a seguir mostra como usar ISDATE para testar 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. Mostrando os efeitos das configurações de SET DATEFORMAT e SET LANGUAGE nos valores de retorno

As seguintes instruções mostram os valores que são 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 and Parallel Data Warehouse

C. Usando ISDATE para testar uma expressão de data/hora válida

O exemplo seguinte mostra como usar ISDATE para testar 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)

Deixe uma resposta

O seu endereço de email não será publicado.