我想在 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
方法来做到这一点?谁能告诉我他们的事?
我想在 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
方法来做到这一点?谁能告诉我他们的事?
请记住,您可以对 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)
等等
如果您的 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 并没有很好地发挥作用。
我强烈建议您使用参数化查询,而不是首先将值作为字符串发送。
这样,您只需要能够将输入格式转换为DateTime
or DateTimeOffset
,然后您就不必担心数据库格式。这不仅更简单,而且避免了 SQL 注入攻击(例如针对字符串值),并且在面对数据库设置更改时更加健壮。
对于原始转换为 a DateTime
,我建议您使用DateTime.ParseExact
orDateTime.TryParseExact
明确指定预期格式。
这对我有用:
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 变量传递给过程或其他东西