Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de ISDATE() no SQL Server


No SQL Server, você pode usar o ISDATE() função para verificar se um valor é uma data válida.

Para ser mais específico, esta função verifica apenas se o valor é uma data válida , hora , ou datahora valor, mas não datetime2 valor. Se você fornecer um datetime2 valor, ISDATE() dirá que não é uma data (retornará 0 ).

Este artigo contém exemplos dessa função.


Sintaxe


Primeiro, aqui está a sintaxe:
ISDATE ( expression )

Onde expression é a expressão a ser testada.

Exemplo 1 - Data de validade


Veja um exemplo usando uma expressão válida:
SELECT ISDATE('2000-01-01') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 1        |
+----------+

Isso retorna 1 , o que significa que é uma data válida , hora , ou datahora valor.

Exemplo 2 - Data inválida


Aqui está um exemplo com uma expressão inválida:
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 0        |
+----------+

Isso retorna 0 , o que significa que não é uma data válida , hora , ou datahora valor.

Exemplo 3 – Usando o valor de retorno


Você pode usar uma instrução condicional para usar o valor de retorno (em vez de simplesmente exibir 0 ou 1 ).

Aqui está um exemplo básico em que simplesmente imprimimos Valid Date ou Data inválida , dependendo se o valor de retorno é 1 ou 0 :
IF ISDATE('2000-01-01') = 1  
    PRINT 'Valid Date'  
ELSE  
    PRINT 'Invalid Date';

Resultado:
Valid Date

Exemplo 4 – Suas configurações de IDIOMA


O valor de retorno de ISDATE() depende do seu LANGUAGE e DATEFORMAT definições.

Aqui está um exemplo para demonstrar como o mesmo valor pode retornar resultados diferentes dependendo do LANGUAGE configuração usada.

Britânico

SET LANGUAGE British;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';

Resultado:
Changed language setting to British.
+-------------------------+
| 20/01/2000 in British   |
|-------------------------|
| 1                       |
+-------------------------+

br_english

SET LANGUAGE us_english;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';

Resultado:
Changed language setting to us_english.
+----------------------------+
| 20/01/2000 in us_english   |
|----------------------------|
| 0                          |
+----------------------------+

Isso acontece porque British usa o dd/MM/aaaa formato enquanto us_english usa MM/dd/aaaa .

Exemplo 5 – Suas configurações de DATEFORMAT


Como mencionado, o valor de retorno de ISDATE() também depende do seu DATEFORMAT definições.

Aqui está um exemplo para demonstrar como o mesmo valor pode retornar resultados diferentes dependendo do DATEFORMAT configuração usada.

dmy

SET DATEFORMAT dmy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';

Resultado:
+--------------------------------------+
| 20/01/2000 while DATEFORMAT is dmy   |
|--------------------------------------|
| 1                                    |
+--------------------------------------+

mdy

SET DATEFORMAT mdy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';

Resultado:
+--------------------------------------+
| 20/01/2000 while DATEFORMAT is mdy   |
|--------------------------------------|
| 0                                    |
+--------------------------------------+