使用C#转换DateTime for MySQL

我想在C#中更改MySQL的DateTime。

我的MySQL数据库只接受这种格式1976-04-09 22:10:00

在C#中有一个string谁有一个date值:

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

我想转换为MySQL然后它看起来像:

 1976-04-12 22:10 

我怎么可以改变他们或其他程序员如何使用dd mm hh yy方法? 谁能告诉我他们?

请记住,您可以硬编码ISO格式

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

或者使用next:

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

等等

如果DateTime的string格式是固定的,则可以使用以下命令将其转换为System.DateTime

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

现在,当你需要你的特定格式时,你可以改变这个过程,即:

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

编辑 – 更新的代码。 由于一些奇怪的原因DateTime.ParseExact没有打好。

我强烈build议你使用参数化查询,而不是首先将值作为string发送。

这样你只需要能够将你的input格式转换为DateTimeDateTimeOffset ,然后你就不用担心数据库格式。 这不仅更简单,而且避免SQL注入攻击(例如,对于string值),并且在数据库设置更改的情况下更加健壮。

对于原始转换为DateTime ,我build议您使用DateTime.ParseExactDateTime.TryParseExact明确指定预期的格式。

这适用于我:

1.从oracle数据库中提取date并将其传递给variables

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

2.转换为mysql格式

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

3.将formatForMySqlvariables转换为过程或别的东西