none
como convertir fecha para guardarla en MySQL con visual c-sharp RRS feed

  • Pregunta

  • como puedo convertir, la fecha que estoy dando en un texbox que tiene el formato

    dd/MM/yyyy a formato YYYY-MM-DD

    para que se pueda guardar en el campo date de la tabla de datos en MySQL?

    viernes, 17 de mayo de 2013 18:11

Respuestas

  • De todas formas 

    esto no lo veo bien... txt5.Text += DateTime.Now.ToString("dd/MM/yyyy");

    cuando pulsas f añades la fecha al contenido de txt5?? y si tuviera por ejemplo otra fecha?

     txt5.Text =  DateTime.Now.ToString("dd/MM/yyyy");


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 20 de mayo de 2013 13:35
    Moderador
  • public void insertar(TextBox txt1, TextBox txt2, TextBox txt3, TextBox txt4, TextBox txt5, TextBox txt6,ComboBox cmb1) { if (txt1.Text == "" || txt2.Text == "" || txt3.Text == "" || txt4.Text == "" || txt5.Text == "" || txt6.Text == "" || cmb1.Text== "") { MessageBox.Show(" Rellene todos los campos", "Campos vacios", MessageBoxButtons.OK, MessageBoxIcon.Stop); txt1.Focus(); } else { using (cnn) { using(SqlCommand cmd = new SqlCommand("Insert into capturar(TP101,DC102,DC103,DC105,FECHA,EXP,DC109) values(?TP101, ?DC102, ?DC103, ?DC105, ?FECHA, ?EXP, ?DC109);", cnn)) { cnn.Open(); cmd.CommandType = Text;

    cmd.Connection = cnn; cmd.Parameters.AddWithValue("?TP101", txt1.Text); cmd.Parameters.AddWithValue("?DC102", txt2.Text); cmd.Parameters.AddWithValue("?DC103", txt3.Text); cmd.Parameters.AddWithValue("?DC105", txt4.Text); cmd.Parameters.AddWithValue("?FECHA", Convert.ToDateTime(txt5.Text)); cmd.Parameters.AddWithValue("?EXP", txt6.Text); cmd.Parameters.AddWithValue("?DC109", cmb1.Text); cmd.ExecuteNonQuery(); cnn.Close(); MessageBox.Show("Se ha dado de alta correctamente"); } } } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos



    lunes, 20 de mayo de 2013 13:53
    Moderador

Todas las respuestas

  • Hola

    Porque no le pasas el DateTime? Supongo que el tipo de dato en la Tabla MySQL es DateTime ó Date si es que no te interesa almacenar también hora, minuto y segundos.

    Saludos


    • Editado Cruznick viernes, 17 de mayo de 2013 18:30 remarqué los tipos de datos en la tabla MySQL
    viernes, 17 de mayo de 2013 18:14
  • .
    fecha.ToString("yyyy-MM-dd");


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos


    viernes, 17 de mayo de 2013 18:15
    Moderador
  • Hola prueba de esta forma:

    string vFecha = textbox1.Text.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    viernes, 17 de mayo de 2013 18:16
  • También te recomiendo que pases la fecha directamente como datetime, en el parámetro que utilices pasas dicho datetime y la bbdd se encargara de formatearlo...suponiendo que el campo sea datetime en la tabla y no string...saludos

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    viernes, 17 de mayo de 2013 18:19
    Moderador
  • como es eso que dice el titulo para guardarla ?

    para guardar no tiene que aplciar ningun formato, ya que deberias usar parametros

    si el campo es del tipo datetime en tu tabla deberias usar

     string query = "INSERT INTO NombreTabla (campo1, campo2) VALUES (@param1, @param2)"; 
    using(SqlCommand cmd = new SqlCommand(query, conn)) 
    { 
    
       cmd.Parameters.AddWithValue("@param1", textbox1.Text); 
       cmd.Parameters.AddWithValue("@param2", Convert.ToDatetime(textbox2.Text)); 
    
       cmd.ExecuteNonQuery(); 
    } 
    }

    o sea le pasas un datetime directo al parametro, no tienes que convertir a ningun formato

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 17 de mayo de 2013 18:24
  • este es el codigo que tengo para guardar:

    public void insertar(TextBox txt1, TextBox txt2, TextBox txt3, TextBox txt4, TextBox txt5, TextBox txt6,ComboBox cmb1)
            {
                if (txt1.Text == "" || txt2.Text == "" || txt3.Text == "" || txt4.Text == "" || txt5.Text == "" || txt6.Text == "" || cmb1.Text== "")
                {
                    MessageBox.Show(" Rellene todos los campos", "Campos vacios", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    txt1.Focus();
                }
                else
                {
                    try
                    {
                        cnn.Open();
                        cmd.CommandText = "Insert into capturar(TP101,DC102,DC103,DC105,FECHA,EXP,DC109) values('" + txt1.Text + "','" + txt2.Text + "','" + txt3.Text + "','" + txt4.Text + "','" + txt5.Text + "','" + txt6.Text + "','" + cmb1.Text + "')";
                        cmd.Connection = cnn;
                        cmd.ExecuteNonQuery();
                        cnn.Close();
                        MessageBox.Show("Se ha dado de alta correctamente");
                    }
                    catch (Exception m)
                    {
                        MessageBox.Show(m.Message);
                    }
                }
            }

    txt5= fecha, el error me sale, cuando presiono la tecla f en txt5, me muestra la fecha automaticamente  y este es mi codigo de "f"

     {
         if(e.KeyChar=='f'){
             e.Handled = true;
             txt5.Text += DateTime.Now.ToString("dd/MM/yyyy"); 
        }

    y cuando lo guardo, me marca el siguiente error, debido a que MySQl guarda la fecha como yyyy/mm/dd.

    lunes, 20 de mayo de 2013 13:27
  • por qué no implementas la forma de pasar parámetros como indico Leandro?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 20 de mayo de 2013 13:32
    Moderador
  • De todas formas 

    esto no lo veo bien... txt5.Text += DateTime.Now.ToString("dd/MM/yyyy");

    cuando pulsas f añades la fecha al contenido de txt5?? y si tuviera por ejemplo otra fecha?

     txt5.Text =  DateTime.Now.ToString("dd/MM/yyyy");


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 20 de mayo de 2013 13:35
    Moderador
  • si la fecha la introdusco manualmente, por ejemplo 20/05/13, en la base de datos aparece 13/05/20.

    lo de leandro, no se como aplicarlo(soy muy noob )

    lunes, 20 de mayo de 2013 13:42
  • public void insertar(TextBox txt1, TextBox txt2, TextBox txt3, TextBox txt4, TextBox txt5, TextBox txt6,ComboBox cmb1) { if (txt1.Text == "" || txt2.Text == "" || txt3.Text == "" || txt4.Text == "" || txt5.Text == "" || txt6.Text == "" || cmb1.Text== "") { MessageBox.Show(" Rellene todos los campos", "Campos vacios", MessageBoxButtons.OK, MessageBoxIcon.Stop); txt1.Focus(); } else { using (cnn) { using(SqlCommand cmd = new SqlCommand("Insert into capturar(TP101,DC102,DC103,DC105,FECHA,EXP,DC109) values(?TP101, ?DC102, ?DC103, ?DC105, ?FECHA, ?EXP, ?DC109);", cnn)) { cnn.Open(); cmd.CommandType = Text;

    cmd.Connection = cnn; cmd.Parameters.AddWithValue("?TP101", txt1.Text); cmd.Parameters.AddWithValue("?DC102", txt2.Text); cmd.Parameters.AddWithValue("?DC103", txt3.Text); cmd.Parameters.AddWithValue("?DC105", txt4.Text); cmd.Parameters.AddWithValue("?FECHA", Convert.ToDateTime(txt5.Text)); cmd.Parameters.AddWithValue("?EXP", txt6.Text); cmd.Parameters.AddWithValue("?DC109", cmb1.Text); cmd.ExecuteNonQuery(); cnn.Close(); MessageBox.Show("Se ha dado de alta correctamente"); } } } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos



    lunes, 20 de mayo de 2013 13:53
    Moderador
  • Muchas Gracias!!!, ya quedo!
    lunes, 20 de mayo de 2013 14:02
  • acostumbrate a realizar asi los inserts, updates o selects ok??


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 20 de mayo de 2013 14:03
    Moderador
  • ya esta, de hecho ya ando buscando informacion sobre los parametros.

    Gracias!

    lunes, 20 de mayo de 2013 14:04
  • disculpa, si estoy trabajando modelo a capas? el conver.ToDateTime lo uso en mi acceso datos y en m formulario.
    sábado, 17 de julio de 2021 15:29
  • me sirvio, no se que hize pero lo puse en varios lugares como mis metodos de gurdar y consultar pero como trabajo con el modelo a capas me confundo mas facil pero ya me funciono, gracias.
    sábado, 17 de julio de 2021 15:44
  • El modelo de capas es justamente para evitar confusiones. En la capa de datos deberías tener un solo métodos para cada operación en cada tabla (aunque puede haber mas de una tabla), entonces si hay un error, lo corriges en ese lugar y te asegura que se resolvió. En cambio, si pones métodos para guardar en cada formulario que lo necesites, si necesitás corregir hay que hacerlo a todos, llega el momento en eso se transforma en un caos y siempre terminas olvidándote de corregir algunos.
    domingo, 18 de julio de 2021 14:17
  • disculpa, si estoy trabajando modelo a capas? el conver.ToDateTime lo uso en mi acceso datos y en m formulario.

    Eso depende de como definiste los método en las distintas capas, por ejemplo:

    Capa de Datos:

    public static bool Guardar(Int32 IdCursante, DateTime fechaInsc)
        {    
          using (SqlConnection cn = new SqlConnection(*****))
          {
            cn.Open();
            String sql = "INSERT INTO Cursantes(IdCursante, FechaIns) VALUES (@IdCursante, @fecha)";
          
          SqlCommand cmd = new SqlCommand(sql, cn);
          cmd.Parameters.AddWithValue("@IdCursante", IdCursante);
          cmd.Parameters.AddWithValue("@fecha", fechaInsc);
          
          return (int)cmd.ExecuteNonQuery() > 0;
          }
        }
    

    En este caso el método "Guardar" recibe el parámetro "fechaInsc" de tipo DateTime, así que la conversión tendrás que hacerla donde vas a llamar al "Guardar", generalmente en la capa de negocios.

    Otra cosa: El método conver.ToDateTime generará error si dato a convertir no es una fecha correcta, por ejemplo los datos null provenientes de las bases de datos.

    domingo, 18 de julio de 2021 14:36