ISDATE (Transact-SQL)

Devuelve 1 si expression es un valor date, time o datetime válido; de lo contrario, devuelve 0.

Para obtener información general acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos comunes a los tipos de datos y funciones de fecha y hora, vea Usar datos de fecha y hora.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

ISDATE ( expression )

Argumentos

  • expression
    Es una cadena de caracteres o expresión que se puede convertir en una cadena de caracteres. La expresión debe tener menos de 4.000 caracteres.

Tipo devuelto

int

Notas

ISDATE solo es determinista si se utiliza con la función CONVERT, se especifica el parámetro de estilo CONVERT y el estilo no es igual a 0, 100, 9 ni 109.

El valor devuelto de ISDATE depende de los valores establecidos por SET DATEFORMAT, SET LANGUAGE y la opción del idioma predeterminado. Para obtener ejemplos, vea el ejemplo C.

Formatos de expresión ISDATE

Para obtener ejemplos de formatos válidos para los que ISDATE devolverá 1, vea la sección "Formatos de literal de cadena compatibles para datetime" en los temas datetime y smalldatetime. Para obtener más ejemplos, vea también la columna Entrada/salida de la sección "Argumentos" de CAST y CONVERT.

La tabla siguiente resume los formatos de expresión de entrada que no son válidos y devuelven 0 o un error.

Expresión ISDATE

Valor devuelto de ISDATE

NULL

0

Valores de tipos de datos incluidos en la lista Tipos de datos en cualquier categoría de tipo de datos distinta de las cadenas de caracteres, cadenas de caracteres Unicode o fecha y hora.

0

Valores de tipos de datos text, ntext o image.

0

Cualquier valor que tiene una escala de precisión por segundos mayor que 3 (.0000 a.0000000... n)

0

Cualquier valor que mezcla una fecha válida con un valor no válido, por ejemplo 1995-10-1a.

0

Ejemplos

A. Utilizar ISDATE para probar si una expresión de fecha y hora es válida

En el siguiente ejemplo se muestra cómo usar ISDATE para probar si una cadena de caracteres es un tipo datetime válido.

IF ISDATE('2009-05-12 10:19:41.177') = 1
    PRINT 'VALID'
ELSE
    PRINT 'INVALID'

B. Mostrar los efectos de los parámetros SET DATEFORMAT y SET LANGUAGE en los valores devueltos

Las instrucciones siguientes muestran los valores que se devuelven al establecer SET DATEFORMAT y 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;

Vea también

Referencia