24 .net c# mysql datetime datetime-conversion
我想在C#中更改MySQL的DateTime.
我的MySQL数据库只接受这种格式1976-04-09 22:10:00
.
在C#中有一个具有日期值的字符串:
string str = "12-Apr-1976 22:10";
Run Code Online (Sandbox Code Playgroud)
我想转换为MySQL,然后它看起来像:
1976-04-12 22:10
Run Code Online (Sandbox Code Playgroud)
我如何通过使用dd mm hh yy
方法更改它们或其他程序员如何做到这一点?谁能告诉我他们的情况?
aba*_*hev 57
请记住,您可以硬编码ISO格式
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
或使用下一个:
// 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)
Run Code Online (Sandbox Code Playgroud)
等等
Jas*_*ong 16
如果DateTime的字符串格式是固定的,您可以转换为System.DateTime
使用:
string myDate = "12-Apr-1976 22:10";
DateTime dateValue = DateTime.Parse(myDate);
Run Code Online (Sandbox Code Playgroud)
现在,当您以特定格式需要它时,您可以反转该过程,即:
string formatForMySql = dateValue.ToString("yyyy-MM-dd HH:mm");
Run Code Online (Sandbox Code Playgroud)
编辑 - 更新的代码.由于一些奇怪的原因,DateTime.ParseExact并不是很好玩.
我强烈建议您使用参数化查询,而不是首先将值作为字符串发送.
这样,您只需将输入格式转换为DateTime
或DateTimeOffset
,然后您就不必担心数据库格式.这不仅更简单,而且避免了SQL注入攻击(例如,对于字符串值),并且在面对数据库设置更改时更加健壮.
对于原始转换为a DateTime
,我建议您使用DateTime.ParseExact
或DateTime.TryParseExact
明确指定预期的格式.