O MySQL só consegue gravar a data em um banco se a data for passada para ele no formato americano, ou seja; yyyy-MM-dd, ou seja, primeiro informamos o ano, depois os meses e depois a data. Isso tem uma explicação lógica; é muito mais prático ordenar datas a partir do ano do que a partir da data.
Portanto, na programação MVC o que o usuário vê nem sempre é o que o sistema realmente vai fazer. Ao mostrar um dateTimerPicker na tela para o usuário (cama da View) ele irá trabalhar normalmente com as datas no formato brasileiro, mas o que ocorre na camada Control é a conversão deste valor.
Para converter a data brasileira em americana use o código exemplo;
dateTimePicker1.Value.ToString("yyyy-MM-dd")
Um exemplo funcional gravando em um banco de dados;
MySqlConnection Conecta = ConectaAero.ConectaLogo();
MySqlCommand Inserir = new MySqlCommand();
Inserir.Connection = Conecta;
Inserir.CommandText = "INSERT INTO tb01_aeronove (tb01_prefixo, tb01_modelo, tb01_datafab) VALUES ('" +
TxtPrefixo.Text + "', '" +
TxtModelo.Text + "', '" +
dateTimePicker1.Value.ToString("yyyy-MM-dd") +
"')";
// Tratamento de Erros
try
{
Inserir.ExecuteNonQuery();
Conecta.Close();
MessageBox.Show("Avião cadastrado com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information);
TxtModelo.Clear();
TxtPrefixo.Clear();
TxtPrefixo.Focus();
}
catch (Exception ex)
{
MessageBox.Show("Ocorreu um erro, por favor, informe ao desenvolvedor; \n" + ex.Message + ".", "Erro do MySql.", MessageBoxButtons.OK , MessageBoxIcon.Error);
TxtPrefixo.Focus();
}