使用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格式转换为DateTime
或DateTimeOffset
,然后你就不用担心数据库格式。 这不仅更简单,而且避免SQL注入攻击(例如,对于string值),并且在数据库设置更改的情况下更加健壮。
对于原始转换为DateTime
,我build议您使用DateTime.ParseExact
或DateTime.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转换为过程或别的东西