Share via


ISDATE (Transact-SQL)

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

ISDATE devuelve 0 si la expression es un valor datetime2.

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). Tenga en cuenta que el intervalo de datos de fecha y hora es de 01-01-1753 a 31-12-9999, mientras que el intervalo de datos de fecha es de 01-01-0001 a 31-12-9999.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

ISDATE ( expression )

Argumentos

  • expression
    Es una cadena de caracteres o una expresión que se puede convertir en una cadena de caracteres. La expresión debe tener menos de 4.000 caracteres. No se permiten tipos de datos de fecha y hora, excepto datetime y smalldatetime, como argumento para ISDATE.

Tipo de valor devuelto

int

Comentarios

ISDATE solo es determinista si se usa 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 Establecer la opción de configuración del servidor 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 literales de cadena compatibles para datetime" en los temas datetime y smalldatetime. Para obtener ejemplos adicionales, vea también la columna Input/Output de la sección "Argumentos" de CAST y CONVERT.

En la tabla siguiente se resumen 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). ISDATE devolverá 0 si la expression es un valor datetime2 pero devolverá 1 si la expression es un valor datetime válido.

0

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

0

Examples

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

CAST y CONVERT (Transact-SQL)