sql >> Base de Datos >  >> RDS >> Sqlserver

Ejemplos de ISDATE() en SQL Server

En SQL Server, puede usar ISDATE() función para verificar si un valor es una fecha válida.

Para ser más específicos, esta función solo verifica si el valor es una fecha válida. , tiempofechahora valor, pero no un datetime2 valor. Si proporciona una fecha y hora2 valor, ISDATE() le dirá que no es una fecha (devolverá 0 ).

Este artículo contiene ejemplos de esta función.

Sintaxis

Primero, aquí está la sintaxis:

ISDATE ( expression )

Donde expression es la expresión a probar.

Ejemplo 1:fecha válida

Aquí hay un ejemplo usando una expresión válida:

SELECT ISDATE('2000-01-01') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Esto devuelve 1 , lo que significa que es una fecha válida , tiempofechahora valor.

Ejemplo 2:fecha no válida

Aquí hay un ejemplo con una expresión no válida:

SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Esto devuelve 0 , lo que significa que no es una fecha válida , tiempofechahora valor.

Ejemplo 3:uso del valor devuelto

Puede usar una declaración condicional para hacer uso del valor devuelto (en lugar de simplemente mostrar 0 o 1 ).

Aquí hay un ejemplo básico en el que simplemente imprimimos Fecha válida o Fecha no válida , dependiendo de si el valor de retorno es 1 o 0 :

IF ISDATE('2000-01-01') = 1  
    PRINT 'Valid Date'  
ELSE  
    PRINT 'Invalid Date';

Resultado:

Valid Date

Ejemplo 4:su configuración de IDIOMA

El valor de retorno de ISDATE() depende de tu LANGUAGE y DATEFORMAT configuración.

Aquí hay un ejemplo para demostrar cómo el mismo valor puede arrojar diferentes resultados dependiendo del LANGUAGE configuración utilizada.

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                       |
+-------------------------+

us_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                          |
+----------------------------+

Esto sucede porque British usa el dd/MM/yyyy formatear mientras us_english usa MM/dd/aaaa .

Ejemplo 5:su configuración de DATEFORMAT

Como se mencionó, el valor de retorno de ISDATE() también depende de su DATEFORMAT configuración.

Aquí hay un ejemplo para demostrar cómo el mismo valor puede arrojar diferentes resultados dependiendo del DATEFORMAT configuración utilizada.

dma

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                                    |
+--------------------------------------+