- 03/14/2017
- 3 minutos para leer
-
- c
- j
- r
- M
- i
-
+6
Se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Devuelve 1 si la expresión es un valor válido de fecha, hora o fecha-hora; en caso contrario, 0.
ISDATE devuelve 0 si la expresión es un valor datetime2.
Para obtener una visión general de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, consulte Tipos de datos y funciones de fecha y hora (Transact-SQL). Tenga en cuenta que el rango para los datos de fecha y hora es de 1753-01-01 a 9999-12-31, mientras que el rango para los datos de fecha es de 0001-01-01 a 9999-12-31.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ISDATE ( expression )
Nota
Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte la documentación de versiones anteriores.
Argumentos
expresión
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. Los tipos de datos de fecha y hora, excepto datetime y smalldatetime, no están permitidos como argumento de ISDATE.
Tipo de retorno
int
Observaciones
ISDATE es determinista sólo si se utiliza con la función CONVERT, si se especifica el parámetro de estilo CONVERT y el estilo no es igual a 0, 100, 9 o 109.
El valor de retorno de ISDATE depende de la configuración establecida por SET DATEFORMAT, SET LANGUAGE y Configure the default language Server Configuration Option.
Formatos de expresión de ISDATE
Para ejemplos de formatos válidos para los que ISDATE devolverá 1, consulte la sección «Supported String Literal Formats for datetime» en los temas datetime y smalldatetime. Para ejemplos adicionales, vea también la columna Entrada/Salida de la sección «Argumentos» de CAST y CONVERT.
La siguiente tabla resume los formatos de expresiones de entrada que no son válidos y que devuelven 0 o un error.
Expresión ISDATE | Valor de retorno ISDATE |
---|---|
NULL | 0 |
Valores de los tipos de datos enumerados en Tipos de datos en cualquier categoría de tipo de datos que no sean cadenas de caracteres, cadenas de caracteres Unicode o fecha y hora. | 0 |
Valores de tipos de datos de texto, ntexto o imagen. | 0 |
Cualquier valor que tenga una escala de precisión de segundos mayor que 3, (.0000 hasta .0000000…n). ISDATE devolverá 0 si la expresión es un valor datetime2, pero devolverá 1 si la expresión es un valor datetime válido. | 0 |
Cualquier valor que mezcle una fecha válida con un valor no válido, por ejemplo 1995-10-1a. | 0 |
Ejemplos
A. Usando ISDATE para probar una expresión datetime válida
El siguiente ejemplo muestra cómo usar ISDATE
para probar si una cadena de caracteres es un datetime válido.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Mostrar los efectos de las configuraciones SET DATEFORMAT y SET LANGUAGE en los valores de retorno
Las siguientes sentencias muestran los valores que se devuelven como resultado de las configuraciones de 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;
Ejemplos: Azure Synapse Analytics y Parallel Data Warehouse
C. Uso de ISDATE para comprobar una expresión válida de fecha y hora
El siguiente ejemplo muestra cómo utilizar ISDATE
para comprobar si una cadena de caracteres es una fecha y hora válida.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Vea también
CAST y CONVERT (Transact-SQL)
.