/ / La conversión falló al convertir la fecha y / o la hora de una cadena de caracteres - c #, sql-server-2008

La conversión falló al convertir la fecha y / o la hora de la cadena de caracteres - c #, sql-server-2008

El error aparece en date_to y date_from al agregar datos a la base de datos. En la base de datos del servidor sql, el tipo de datos para date_to & date_from es date. sugerir alguna solucion

try
{
cmd = new SqlCommand("insert into license1 values(@l_id,@customer_id,@d_id,@device_name,@from,@to)", cn);

cmd.Parameters.AddWithValue("@l_id", license_id.Text);
cmd.Parameters.AddWithValue("@customer_id", c_comboBox4.Text);
cmd.Parameters.AddWithValue("@d_id", d_id_comboBox4.Text);
cmd.Parameters.AddWithValue("@device_name", d_name_comboBox5.Text);
cmd.Parameters.AddWithValue("@to", date_to.Text);
cmd.Parameters.AddWithValue("@from", date_from.Text);

cn.Open();
a = cmd.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("Data Submitted");
}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

Respuestas

7 para la respuesta № 1

Toma la conversión en tus propias manos:

cmd.Parameters.AddWithValue("@to", DateTime.Parse( date_to.Text));
cmd.Parameters.AddWithValue("@from", DateTime.Parse( date_from.Text));

y cuando eso todavía falla, usa una versión de DateTime.ParseExact() con un formato adecuado y CultureInfo.

Es posible que desee considerar agregar una capa de validación más robusta y extensa. Las fechas y los números son muy sensibles a los errores de escritura, la configuración del usuario y las suposiciones del usuario.

Siempre asume TextBox.Text Está lleno de errores.


4 para la respuesta № 2

si el usuario ingresa el formato de fecha como: yyyy-MM-dd entonces prueba esto:

String strDateFormat= "yyyy-MM-dd";//change accordingly if format is something different
DateTime to=DateTime.ParseExact(date_to.Text,strDateFormat, CultureInfo.InvariantCulture);
DateTime from=DateTime.ParseExact(date_from.Text, strDateFormat, CultureInfo.InvariantCulture);

cmd.Parameters.AddWithValue("@to", to);
cmd.Parameters.AddWithValue("@from", from);

3 para la respuesta № 3

prueba esto

 cmd.Parameters.AddWithValue("@to",Convert.ToDateTime(date_to.Text));
cmd.Parameters.AddWithValue("@from",Convert.ToDateTime( date_from.Text});

0 para la respuesta № 4

Creo que su formato de fecha puede causar el problema. Debe utilizar el formato de fecha compatible con el proveedor de SQL. La mayoría de SQL usa el formato MM-dd-aaaa. Entonces, si pasa el 21-1-2014, el servidor SQL no lo acepta porque no existe el 21 mes.