0

以下のコードで Facebook からタイムスタンプを取得します

cust_updated_time = obj["updated_time"].ToString();//2013-08-01T02:55:31+0000
abccusttime = cust_updated_time.Substring(0, cust_updated_time.ToString().Length - 3);//2013-08-01T02:55:31+0

ここで、Oracleテーブルに挿入しようとしています

to_date('" + abccusttime + "', 'mm-dd-yyyy hh24:mi:ss')

しかし、「有効な月ではありません」というエラーが表示されます

何か案は?前もって感謝します。

4

6 に答える 6

1

おそらくクエリをパラメータ化する方が簡単ですが、この場合は時間形式が間違っています。合わせる;

2013-08-01T02:55:31+0000

次のような形式が必要です。

yyyy-MM-dd"T"hh24:mi:ss"+0000"

または、単一のゼロを含む前処理された形式が必要な場合。

yyyy-MM-dd"T"hh24:mi:ss"+0"

サンプル;

SELECT TO_DATE('2013-08-01T02:55:31+0000', 'yyyy-MM-dd"T"hh24:mi:ss"+0000"') FROM DUAL;

> August, 01 2013 02:55:31+0000

Oracle 日付形式リファレンス

タイムゾーン情報を照合/処理することもできますが、それが設定されている場合にどのような結果が得られるかが明確ではないため、省略しました (TZHそこでTZM役立ちます) 。

かなり些細な SQLfiddle

于 2013-08-12T08:49:14.643 に答える
0

代わりに、次のようにする必要があります。

 to_date(:abccusttime, 'mm-dd-yyyy hh24:mi:ss')

次に、abbcusttime のパラメーターを設定します。また、パラメーターを追加するときにアポストロフィ (') を使用しないでください。それは好きではありません :)

OracleCommand.Parameters.Add(":abccusttime", OracleDbType.Varchar2).Value = abccusttime; 
于 2013-08-12T08:49:11.270 に答える
0

パラメータを使用することをお勧めします

  DateTime updatedtime = obj["updated_time"] as DateTime;

  var statement = "..... where Updated_time > :updatedtime";

    using (OracleConnection connection = new OracleConnection(connectionString))
    using (OracleCommand command = new OracleCommand(statement, connection))
    {
        command.Parameters.AddWithValue(":updatedtime", updatedtime );
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
于 2013-08-12T08:49:49.833 に答える