使用C#转换MySQL的DateTime

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)

等等

  • hh:mm 是 12 小时格式,您需要 HH:mm。我刚刚用那部分更新了我的代码 (3认同)

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并不是很好玩.


Jon*_*eet 6

我强烈建议您使用参数化查询,而不是首先将值作为字符串发送.

这样,您只需将输入格式转换为DateTimeDateTimeOffset,然后您就不必担心数据库格式.这不仅更简单,而且避免了SQL注入攻击(例如,对于字符串值),并且在面对数据库设置更改时更加健壮.

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

  • 根据我对MySQL的经验,可能是因为整理设置,它并不总是接受`System.DateTime`并且保证在任何服务器上正常工作的最佳方法是将日期显式转换为字符串格式为`yyyy-MM-dd ..` (3认同)