ti-enxame.com

Converta DateTime para MySQL usando C #

Eu quero mudar o DateTime para MySQL em c #.

Meu banco de dados MySQL aceita apenas este formato 1976-04-09 22:10:00.

Em C #, tem uma string que possui um valor de data:

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

Eu quero converter para MySQL, então parece:

1976-04-12 22:10

Como eu posso alterá-los ou como outro programador faz isso usando dd mm hh yy método? Alguém pode me falar sobre eles?

24
Steven Spielberg

Lembre-se de que você pode codificar o formato ISO

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

ou use a seguir:

// 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)

e assim por diante

57
abatishchev

Se seu formato de string para o DateTime for fixo, você poderá converter para o System.DateTime Usando:

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

Agora, quando você precisar em seu formato específico, poderá reverter o processo, ou seja:

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

editar - código atualizado. Por alguma estranha razão, DateTime.ParseExact não estava jogando Nice.

16
Jason Jong

Eu sugiro fortemente que você use consultas parametrizadas em vez de enviar valores como seqüências de caracteres em primeiro lugar.

Dessa forma, você só precisa converter seu formato de entrada para DateTime ou DateTimeOffset e, em seguida, não precisa se preocupar com o formato do banco de dados. Isso não é apenas mais simples, mas evita ataques de injeção de SQL (por exemplo, para valores de string) e é mais robusto diante das alterações nas configurações do banco de dados.

Para a conversão original para um DateTime, sugiro que você use DateTime.ParseExact ou DateTime.TryParseExact para especificar explicitamente o formato esperado.

6
Jon Skeet

Isso funciona para mim:

1. Extraia a data da base de dados Oracle e passe-a para a variável

 string lDat_otp = "";

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

2. Conversão para o formato mysql

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

3.Pass formatForMySql variável para procedimento ou para outra coisa

1
CrBruno