Convertir DateTime para MySQL usando C #

Quiero cambiar el DateTime para MySQL en C #.

Mi base de datos MySQL solo acepta este formato 1976-04-09 22:10:00 .

En C # tiene una cadena que tiene un valor de fecha:

 string str = "12-Apr-1976 22:10"; 

Quiero convertir para MySQL, entonces se ve así:

 1976-04-12 22:10 

¿Cómo puedo cambiarlos o cómo otros progtwigdores hacen esto usando el método dd mm hh yy ? ¿Alguien puede decirme sobre ellos?

Tenga en cuenta que puede codificar el formato ISO

 string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm:ss"); 

o use el siguiente:

 // just to shorten the code var isoDateTimeFormat = CultureInfo.InvariantCulture.DateTimeFormat; // "1976-04-12T22:10:00" dateValue.ToString(isoDateTimeFormat.SortableDateTimePattern); // "1976-04-12 22:10:00Z" dateValue.ToString(isoDateTimeFormat.UniversalSortableDateTimePattern) 

y así

Si su formato de cadena para DateTime es fijo, puede convertir a System.DateTime usando:

 string myDate = "12-Apr-1976 22:10"; DateTime dateValue = DateTime.Parse(myDate); 

Ahora, cuando lo necesite en su formato específico, puede revertir el proceso, es decir:

 string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm"); 

editar – código actualizado. Por alguna extraña razón, DateTime.ParseExact no estaba jugando bien.

Le sugiero que use consultas parametrizadas en lugar de enviar valores como cadenas en primer lugar.

De esta manera, solo necesita poder convertir su formato de entrada a DateTime o DateTimeOffset , y luego no tendrá que preocuparse por el formato de la base de datos. Esto no solo es más simple, sino que evita los ataques de inyección SQL (por ejemplo, para los valores de cadena) y es más robusto frente a los cambios en la configuración de la base de datos.

Para la conversión original a DateTime , le sugiero que utilice DateTime.ParseExact o DateTime.TryParseExact para especificar explícitamente el formato esperado.

Esto funciona para mí:

1. Extraiga la fecha de la base de datos de Oracle y páselo a variable

  string lDat_otp = ""; if (rw_mat["dat_otp"].ToString().Length < = 0) { lDat_otp = ""; } else { lDat_otp = rw_mat["dat_otp"].ToString(); } 

2. Conversión a formato mysql

 DateTime dateValue = DateTime.Parse(lDat_otp); string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm"); 

3.Pass formatForMySql variable al procedimiento o a algo más