Aquí te dejamos una publicación completa donde verás como solucionar el problema "Error de conversión al convertir datos y hora" en SQL Server.

Las fechas y horas en SQL Server son propensas a errores en la ejecución de consultas debido a inconsistencias en el formato de fecha y hora. Asegúrese de que una cadena de fecha esté bien formateada antes de su conversión, o este tipo de error puede ocurrir. Si el literal de fecha no está en el formato correcto, SQL no puede entenderlo como un valor DateTime; por lo tanto, aparece el mensaje "Error de conversión al convertir fecha y/o hora desde una cadena de caracteres".

Error en la conversión al convertir fecha y hora en SQL

Esto sucede porque la cadena que se está convirtiendo tiene un formato incorrecto, incluido un delimitador inadecuado y una secuencia de fecha incorrecta. Otra razón probable de este problema podría ser un formato incorrecto o el uso de caracteres especiales. La validación adecuada de la entrada también evitará cualquier error de conversión, junto con el uso de formatos consistentes adecuados.

Un ejemplo:



SQL Server proporciona soporte para el formato de notación de fecha y hora británica (día-mes-año), como 10 de enero de 2015 o 10/1/2015, mediante su función de "conversión" incorporada y con un estilo de formato de 103.


En este ejemplo, puede ver el formato incorrecto de la cadena de fecha suministrada. Se han suministrado incorrectamente el mes, el día y el año en ese orden, lo que SQL Server no entiende y devuelve un error. El formato adecuado para convertir fechas utilizando el estilo de fecha "103" al estilo del Reino Unido es "dd/mm/aaaa".


Error de formato: no se puede especificar @date_time_value. Seleccione CONVERT(datetime2, @date_time_value, 103), como UK_Date_Time_Style del conjunto de datos "varchar(100)= '10/16/2015 21:02:04'"Error que se produce debido al formato de fecha incorrecto. Figura 2


Formato correcto:


Tres "dd/mm/aa" y 103 "dd/mm/aa" son los formatos de fecha para el inglés británico y el francés, respectivamente. Aquí, 103 y 3 son los formatos de fecha que se utilizan.


Declare la variable '@date_time_value' con el valor '10/1/15 21:02:04' y use la función CONVERTIR con los parámetros 'datetime2' y '@date_time_value' como un valor 103 como su fuente para el Date_Time_Style. Figura 3: El formato de fecha correcto usando "dd/mm/aaaa" Citas francesas y británicas Declare @date_time_value como varchar(100) y asígnele un valor de '10/1/15 21:02:04'. A continuación, ejecute la función CONVERTIR contra datetime2 y @date_time_value proporcionando 3 para UK_Date_Time_Style. Formato de fecha apropiado usando "dd/mm/aa" Figura 4 Citas francesas y británicas

La segunda muestra es:


A veces, los datos erróneos que intenta guardar pueden ser la causa del error de conversión de fecha en SQL Server, en lugar de los formatos de fecha u hora aplicados.

Fecha incorrecta:


Como el año 2019 no es bisiesto, el error que aparece a continuación se produce únicamente porque la fecha "29 de febrero" no existe en ese año.


Declarar fecha y hora. '2019-02-29 21:02:04' es el valor de varchar(100). Seleccionar el segundo valor de fecha y hora del parámetro "cast" Figura 5: Debido a que el año 2019 no es bisiesto, el 29 de febrero no está incluido. Esta es la razón por la que se produce el error.

Opción correcta:


Declare el valor de fecha y hora, por favor. '2019-02-28 21:02:04' es un valor varchar(100). Seleccione el segundo valor de fecha y hora del parámetro "cast" Imagen 6: Listado actualizado

Fechas de la norma ISO 8601:


Si bien existen muchas formas de manipular valores de fecha, elegir una representación de fecha y hora puede plantear algunos problemas de usabilidad cuando se trabaja con una audiencia de todo el mundo o internacional. Evite utilizar literales de fecha y hora que sean específicos de una cultura en particular. Cuando pensamos en la fecha "03/08/2018", las personas de diferentes partes del mundo le darán significados diferentes.


Se entiende como "8 de marzo de 2018" en inglés británico.


Eso, en escritura europea, es "3 de agosto de 2018".


La buena noticia es que el formato de fecha internacional de la ISO ofrece una alternativa. Otra opción más neutral en cuanto al lenguaje para los literales de cadena que se encarga de todos estos problemas es el formato "AAAA-MM-DDThh:mm:ss", que se define en la norma ISO 8601. En este contexto, el año se denota con "aaaa", el mes con "mm" y el día con "dd". Por lo tanto, el formato internacional ISO para la fecha "8 de marzo de 2018" es "2018-03-08". Por lo tanto, cuando se trata de una presentación de fechas, la norma ISO será la opción más adecuada.


Declare @date_time_value varchar(100) = '2019-03-28 21:02:04', y usando el siguiente código, datetime2 @date_time_value = 126, donde mm es la fecha con el formato [aaaa-mm-ddThh:mi:ss.mmm]. Formato de fecha según la Norma Internacional ISO 8601 (Figura 7)

Comentarios para mejorar:


Parece que cuando se trata de valores de fecha y hora, la comunidad suele confundirse, por lo que, con suerte, este artículo podrá aclararles el asunto. Los tipos de datos como varchar, char, nvarchar, nchar y text nunca deben usarse para almacenar fechas. Nunca recupere información de fecha formateada de la base de datos. Siempre almacene valores de fecha en columnas de tipo DATE, DATETIME o, cuando se requiera mayor precisión, DATETIME2.


Puede resolver este problema o "Error de conversión al convertir datos y hora" a SQL Server siguiendo la guía y solucionando la causa específica del error.




Other Articles
¿Cómo solucionar el problema? ¿La función que estás intentando utilizar se encuentra en un recurso de red que no está disponible?
Si se pregunta cómo solucionar el problema, ¿la función que está intentando utilizar se encuentra en un recurso de red que no está disponible? Esta es la mejor respuesta.

Cómo solucionar el error de procesamiento "Intento de conexión L2TP fallido"
Hoy en nuestro artículo te mostramos cómo solucionar el error de procesamiento “Intento de conexión L2TP fallido” de forma sencilla.

Cómo solucionar el problema del punto de entrada del procedimiento ucrtbase.terminate que falta
Si no sabe cómo solucionar el problema del punto de entrada faltante del procedimiento ucrtbase.terminate, aquí hay una guía paso a paso que lo ayudará.

Cómo solucionar el problema 'Los cambios locales en los siguientes archivos se sobrescribirán'
Para aprender cómo solucionar el problema “Los cambios locales en los siguientes archivos se sobrescribirán”, aquí hay una guía paso a paso que lo ayudará.

Cómo solucionar el problema de que el dispositivo o recurso (servidor DNS) no responde
Aquí os dejo un post completo para que aprendáis Cómo solucionar el problema de que el dispositivo o recurso (servidor DNS) no responde.

Cómo solucionar el error "No se pudo encontrar este elemento"
Hoy te traemos una guía completa para que aprendas a solucionar el error “No se pudo encontrar este elemento”

¿Cómo solucionar el error DEV ERROR 12502 en Call of Duty?
Si te preguntas cómo solucionar el error DEV ERROR 12502 en Call of Duty, aquí tienes una guía con la mejor respuesta.

Cómo solucionar el problema de la etiqueta de error 58tm1 de Microsoft Office
Para aprender a solucionar el problema de la etiqueta de error 58tm1 de Microsoft Office, aquí te dejamos una guía completa.