2017-07-21 80 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)只能通過日期時間格式中的值進行過濾,帶有或不帶時區偏移量,全部不帶引號。 (閱讀更多關於SOQL Date Formats

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

日期字段只能通過值日期格式進行過濾

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

如果您有興趣例如創建的記錄在最後一分鐘,你可以通過建立價值:

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 

我看你的數字時間戳以毫秒爲單位,因此,你必須首先1000除以它。

我不相信你的例子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終有報。 (所有示例都經過驗證,但不是簡單的銷售隊伍。)