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:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base 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 do ISDATE depende das definições definidas por SET DATEFORMAT, SET LANGUAGE e Configurar a Opção de Configuração do Servidor da linguagem predefinida.
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. Mostrando os efeitos das SETSET DATEFORMAT definições e SETSET 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
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';