32

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

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

在 C# 中有一个具有日期值的字符串:

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

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

1976-04-12 22:10

我如何更改它们或其他程序员如何通过使用dd mm hh yy方法来做到这一点?谁能告诉我他们的事?

4

4 回答 4

73

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

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

或使用下一个:

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

等等

于 2010-09-03T05:55:48.467 回答
17

如果您的 DateTime 字符串格式是固定的,您可以转换为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 并没有很好地发挥作用。

于 2010-09-03T05:44:21.157 回答
6

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

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

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

于 2010-09-03T06:25:10.323 回答
1

这对我有用:

1.从oracle数据库中提取日期并将其传递给变量

 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.将 formatForMySql 变量传递给过程或其他东西

于 2012-05-09T08:29:35.870 回答