Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics 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';