ISDATE (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Retornará 1 se a expressão for um valor datetime, válido; caso contrário, 0.
ISDATE retornará 0 se a expressão for um valor datetime2.
Para ter uma visão geral de todas as funções e tipos de dados de data e hora do Transact-SQL, confira Funções e tipos de dados de data e hora (Transact-SQL). Observe que o intervalo de dados de data/hora será 1753-01-01 a 9999-12-31, quando o intervalo de dados de data for 0001-01-01 a 9999-12-31.
Convenções de sintaxe de Transact-SQL
Sintaxe
ISDATE ( expression )
Argumentos
expressão
É uma cadeia de caracteres ou expressão que pode ser convertida em cadeia de caracteres. A expressão deve ter menos de 4.000 caracteres. Os tipos de dados de data e hora, exceto datetime e smalldatetime, não são permitidos como o argumento para ISDATE.
Tipo de retorno
int
Comentários
ISDATE será determinista apenas se você usá-lo 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 retornado de ISDATE depende das configurações definidas por SET DATEFORMAT, SET LANGUAGE e Configurar idioma padrão da opção de configuração de servidor.
Formatos de expressão ISDATE
Para obter exemplos de formatos válidos para os quais ISDATE retornará 1, consulte a seção "Formatos de literal de cadeia de caracteres compatíveis com datetime" nos tópicos datetime e smalldatetime. Para obter outros exemplos, consulte também a coluna Entrada/Saída da seção "Argumentos" de CAST e CONVERT.
A tabela a seguir resume os formatos de expressão de entrada que não são válidos e retornam 0 ou um erro.
Expressão ISDATE | Valor de retorno ISDATE |
---|---|
NULO | 0 |
Valores de tipos de dados listados em Tipos de dados em qualquer categoria de tipo de dados que não cadeias de caracteres, cadeias de caracteres Unicode ou data e hora. | 0 |
Valores de tipos de dados text, ntext ou image. | 0 |
Qualquer valor que tenha uma escala de precisão de segundos maior que 3 (,0000 a ,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 |
Qualquer valor que combine uma data válida com um valor inválido, por exemplo 1995-10-1a. | 0 |
Exemplos
a. Usando ISDATE para testar uma expressão datetime válida
O exemplo a seguir mostra como usar ISDATE
para testar se uma cadeia de caracteres é uma datatime válida.
IF ISDATE('2009-05-12 10:19:41.177') = 1
PRINT 'VALID'
ELSE
PRINT 'INVALID';
B. Mostrando os efeitos das configurações SET DATEFORMAT e SET LANGUAGE em valores de retorno
As instruções a seguir mostram os valores 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 e PDW (Analytics Platform System)
C. Usando ISDATE para testar uma expressão datetime válida
O exemplo a seguir mostra como usar ISDATE
para testar se uma cadeia de caracteres é uma datatime válida.
IF ISDATE('2009-05-12 10:19:41.177') = 1
SELECT 'VALID';
ELSE
SELECT 'INVALID';