2017-07-21 8 views
1

私はSimple_Salesforceを使用して、salesforce APIを使用してデータのまとまりを取得しています。私は電話をかけるときに日付の範囲を指定するためにとにかくあるかどうか疑問に思っていました。次のエラーが表示されます。Simple_Salesforce:日付範囲内でバルクSQL呼び出しを作成する

query = 'SELECT Id, Name FROM Account WHERE createddate > 1451621381000' 

sf.bulk.Account.query(query) 

    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/simple_salesforce/bulk.py", line 157, in _get_batch_results 
    url_query_results = "{}{}{}".format(url, '/', result.json()[0]) 
IndexError: list index out of range 

query = 'SELECT Id, Name FROM Account WHERE createddate > 2017-01-01' 

これは動作しますので、私は条件

query = "SELECT Id, CreatedDate FROM Tbl WHERE Id = '500G0000008LeHzIAK'" 
dd = sf.bulk.Tbl.query(query) 
df = pd.DataFrame(dd) 

にフィルタリングすることができますただし、日付が奇数の方法で保存されているように見える、これは

query = "SELECT Id, CreatedDate FROM Case Tbl CreatedDate = '1328828872000L'" 
query = "SELECT Id, CreatedDate FROM Case Tbl CreatedDate > '1328828872000L'" 
dd = sf.bulk.Tbl.query(query) 
df = pd.DataFrame(dd) 

日付値は次のようになり、エラーがスローされますこれは:1463621383000L

答えて

1

日時フィールド(例えば、 CreatedDate)は、の値で、日付時刻形式(タイムゾーンオフセットの有無にかかわらず、すべて引用符なし)の値でのみフィルタリングできます。あなたは、例えば作成されたレコードに興味がある場合のみ日付形式の値

SELECT Id FROM Opportunity WHERE CloseDate > 2017-01-31 

によってフィルタリングすることができ

SELECT Id FROM Case WHERE CreatedDate > 2017-01-31T23:59:59Z 

日付フィールド(SOQL Date Formatsについての詳細を読みます)したがって、あなたが最初の1000で割りしなければならない、私はあなたの数値のタイムスタンプはミリ秒であることがわかり

sf_timestamp = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(time.time() - 60)) 
sql = "SELECT Id FROM Account WHERE CreatedDate > %s" % sf_timestamp 

:最後の最後に、あなたがすることによって価値を構築することができます。

createddate > 2017-01-01の例は、参照に基づいて動作しないはずなので、私はあなたのために働くとは思わない。あなたは、エラーメッセージが表示されます。

Error: value of filter criterion for field 'createddate' must be of type dateTime and should not be enclosed in quotes

簡単なSalesforceはSalesforceとのみ、後続のエラーから元のエラーメッセージが最終的にシンプル-のSalesforceによって報告されているが正しく報告されないようです。 (すべての例が検証されましたが、シンプルセールスフォースでは検証されません)

関連する問題