ISDATE (Transact-SQL)
Retornará 1 se a expression for um valor date, time ou datetime válido; caso contrário, 0.
Para obter uma visão geral de todos os tipos de dados de data e hora e funções do Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.
Sintaxe
ISDATE ( expression )
Argumentos
- expression
É uma cadeia de caracteres ou expressão que pode ser convertida a uma cadeia de caracteres. A expressão deve ter menos de 4.000 caracteres.
Tipo de retorno
int
Comentários
ISDATE só será determinista 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 de retorno de ISDATE depende das configurações definidas por SET DATEFORMAT, SET LANGUAGE e pela opção de idioma padrão. Para obter exemplos, consulte exemplo C.
Formatos de expressão ISDATE
Para obter exemplos de formatos válidos para os quais ISDATE retornará 1, consulte a seção "Formatos de literais de cadeia de caracteres com suporte para 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 |
---|---|
NULL |
0 |
Valores de 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 dos 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) |
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 é um datetimeválido.
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;