web-dev-qa-db-ja.com

C#を使用してMySQLのDateTimeを変換する

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メソッドを使用してそれらを変更する方法、または他のプログラマーがこれを行う方法誰も彼らについて教えてもらえますか?

24

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)

等々

57
abatishchev

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がニースをプレイしていませんでした。

16
Jason Jong

最初に値を文字列として送信する代わりに、パラメータ化されたクエリを使用することを強くお勧めします。

そうすれば、入力形式をDateTimeまたはDateTimeOffsetに変換することができればよく、データベース形式を心配する必要はありません。これは単純であるだけでなく、SQLインジェクション攻撃(文字列値など)を回避し、データベース設定の変更に対してより堅牢です。

DateTimeへの元の変換には、DateTime.ParseExactまたはDateTime.TryParseExact予想される形式を明示的に指定します。

6
Jon Skeet

これは私のために働く:

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変数をプロシージャまたは他の何かに渡す

1
CrBruno