我正在使用Simple_Salesforce使用salesforce api获取大量数据。我想知道在拨打电话时是否还有指定日期范围。我一直收到以下错误。
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
答案 0 :(得分:2)
日期时间字段(例如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
适合您,因为它不应该根据参考。您收到一条错误消息:
错误:字段'createddate'的过滤条件值必须是dateTime类型,不应该用引号括起来
Simple Salesforce似乎无法正确报告Salesforce的原始错误消息,并且最终只会由Simple-Salesforce报告后续错误。 (所有示例都经过验证,但不是简单的销售人员。)