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
またはDateTimeOffset
に変換することができればよく、データベース形式を心配する必要はありません。これは単純であるだけでなく、SQLインジェクション攻撃(文字列値など)を回避し、データベース設定の変更に対してより堅牢です。
DateTime
への元の変換には、DateTime.ParseExact
またはDateTime.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変数をプロシージャまたは他の何かに渡す