Convertir DateTime para MySQL usando C#


Quiero cambiar la fecha y hora de MySQL en C#.

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

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

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

Quiero convertir para MySQL entonces se ve como:

1976-04-12 22:10

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

Author: abatishchev, 2010-09-03

4 answers

Tenga en cuenta que puede codificar el formato ISO

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

O usar 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í sucesivamente

 54
Author: abatishchev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-19 18:18:36

Si su formato de cadena para la fecha y hora 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");

Edición - código actualizado. Por alguna extraña razón DateTime.ParseExact no estaba jugando bien.

 14
Author: Jason Jong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-03 06:13:04

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

De esa manera, solo necesita poder convertir su formato de entrada a DateTime o DateTimeOffset, y luego no necesita preocuparse por el formato de la base de datos. Esto no solo es más simple, sino que evita ataques de inyección SQL (por ejemplo, para 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 use DateTime.ParseExact o DateTime.TryParseExact para especificar explícitamente el formato esperado.

 5
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-03 06:25:10

Esto funciona para mí:

1.Extraer la fecha de la base de datos de oracle y pasarla 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 al formato mysql

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

3.Pasar la variable formatForMySql al procedimiento o a otra cosa

 1
Author: CrBruno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-14 06:58:17