タイプ の列を持つテーブルを更新しようとしていますTIMESTAMP(0) WITH TIMEZONE
。
データベースへの書き込み方法には米国東部時間のTIMESTAMP
ようなオフセット形式がないため、いくつかの方法を試しましたが成功しませんでした。-05:00
タイム ゾーンとして使用して保存AMERICA/NEW_YORK
されるため、これを適切に処理できない別のアプリケーションで問題が発生します。
現在:28-NOV-16 10.51.43.000000000 AM AMERICA/NEW_YORK
望ましい:28-NOV-16 10.51.43.000000000 AM -05:00
ここでの多くの投稿は、主にデータベースからデータを取得する際のデータのフォーマットについて述べています。他の例は、C# ではなく SqlPlus で説明されています。
Using(OracleConnection conn = new OracleConnection(......))
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.BindByName = true;
cmd.CommandText = "update customer set email_addr = :EMAIL, modified_date= SYSDATE
where cust_id = :CUSTID";
conn.Open();
cmd.Parameters.Add("EMAIL", OracleDbType.Varchar2).Value = txtEmail.Text;
cmd.Parameters.Add("MODIFIED_DATE", OracleDbType.Varchar2).Value = OracleDate.GetSysDate().ToOracleTimeStamp();
cmd.Parameters.Add("CUSTID", OracleDbType.Decimal).Value =Convert.ToDecimal(Session["ID"]);
cmd.ExecuteNonQuery();
}
私も試しmodified_date=to_timestamp(:modified_date, 'MM/DD/YYYY HH:mi:ss')
ましたが、これは適切にフォーマットされたタイムゾーンではないという例外を生成します。
C#でこれを達成する適切な方法は何ですか? 日付/タイムスタンプ列は常に文字列からの変換で書き込まれるべきですか?