TIMESTAMP(0) WITH TIMEZONE
の列を持つ表の更新を試行しています。データベースのTIME ZONE値を使用してOracle TIMESTAMP(0)を更新する適切な方法
TIMESTAMP
がデータベースに書き込まれる方法が、米国東部時間のオフセット形式(-05:00
など)を持たないため、いくつかの方法を試してみました。これはタイムゾーンとしてAMERICA/NEW_YORK
を使用して保存されています。これにより、これを正しく処理できない別のアプリケーションで問題が発生します。
CURRENT: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#でこれを行うための適切な方法は何ですか?日付/タイムスタンプ列は常に文字列からの変換で書き込まれるべきですか?
これは私が必要としていたもので、セッションパラメータの設定に関する別の質問にも答えています。ありがとうございました!私はSYSTIMESTAMPを使用するときにBTWを自動的に正しいタイムゾーンを取得するので、実際には 'AT TIME ZONE'を使用する必要はありませんでした。ありがとうございました。 – Mobilemike