- 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)