0

String 形式の変数 (フォームの DateTime セレクター コントロールから) を単純な Date に変換する際に問題が発生しています。

以下のエラー メッセージが表示されるため、変換を試みています。

INVALID_FIELD: \nAND c.Status__c = 'Closed' AND c.Close_Date__c > 2013-07-01T00:00:00Z\n ^\nRow:1:Column:326 のエラー\nフィールド 'Close_Date__c' のフィルター条件の値は日付型であり、引用符で囲まないでください

私は試した:

sQry += " AND c.Close_Date__c > " + DateTime.ParseExact(filterFromDate, "d", CultureInfo.InvariantCulture) + " AND c.Close_Date__c < " + DateTime.ParseExact(filterFromDate, "d", CultureInfo.InvariantCulture);

しかし、それは受け入れていません (コンパイラはCultureInfo.

どこが間違っていますか?

詳細情報: 申し訳ありませんが、SalesForce のインスタンスを参照する SalesForce オブジェクトに対してこのクエリを使用しています。

4

2 に答える 2

1

更新しました...

そして、これはどうですか(私は多くの仮定をしました.....) どこで

string filterFromDate = "2013-07-01T00:00:00Z";

sQry += " AND c.Close_Date__c > " + DateTime.Parse(filterFromDate).Date.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'sszzzzz") + " AND c.Close_Date__c < " + DateTime.Parse(filterFromDate).Date.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'sszzzzz");

またはSqlParametersでより良い

string filterFromDateStr = "2013-07-01T00:00:00Z";

//Just the date since we don't want to use the Time
var filterFromDate = DateTime.Parse(filterFromDateStr ).Date;

sQry += " AND c.Close_Date__c > @filterFromDate AND c.Close_Date__c < @filterFromDate";

IDbCommand cmd = connection.CreateCommand();
cmd.CommandTimeout = connection.ConnectionTimeout;
cmd.CommandText = sQuery;

cmd.Parameters.Add(new SqlParameter("@filterFromDate ",filterFromDate ));

md.Connection = connection;
var reader = cmd.ExecuteReader();

于 2013-09-18T11:34:53.797 に答える
1

System.Globalization を追加してから...

var date = DateTime.ParseExact(filterFromDate, "dd", CultureInfo.InvariantCulture);
于 2013-09-18T11:19:16.257 に答える