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

System.DateTimeDateTimeの文字列形式が固定されている場合は、次を使用して変換できます。

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

I would strongly suggest you use parameterized queries instead of sending values as strings in the first place.

That way you only need to be able to convert your input format to DateTime or DateTimeOffset, and then you don't need to worry about the database format. This is not only simpler, but avoids SQL injection attacks (e.g. for string values) and is more robust in the face of database settings changes.

For the original conversion to a DateTime, I suggest you use DateTime.ParseExact or DateTime.TryParseExact to explicitly specify the expected format.

于 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 に答える