Simple_Salesforce: hacer llamadas SQL en masa dentro de un rango de fechas

Estoy usando Simple_Salesforce para capturar una porción de datos usando la api de salesforce. Me preguntaba si había alguna manera de especificar un intervalo de fechas al hacer llamadas. Sigo recibiendo el siguiente error.

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' 

Esto funciona, así que puedo filtrar en condiciones

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

Sin embargo, la fecha parece guardarse de manera extraña y esto produce un error.

 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) 

Los valores de fecha se ven así: 1463621383000L

Los campos de fecha y hora (por ejemplo, CreatedDate) se pueden filtrar solo por valores en el formato de fecha y hora , con o sin desplazamiento de zona horaria, todos sin comillas. (Lea más acerca de los formatos de fecha SOQL )

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

Los campos de fecha solo se pueden filtrar por valores en formato de fecha

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

Si está interesado en los registros creados, por ejemplo, en el último minuto, puede generar el valor de la siguiente manera:

 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 

Veo que su marca de tiempo numérica está en milisegundos, por lo tanto, primero debe dividirla por 1000.

No creo que su ejemplo createddate > 2017-01-01 funcione para usted porque no debería funcionar de acuerdo con la referencia. Recibes un mensaje de error:

Error: el valor del criterio de filtro para el campo ‘createddate’ debe ser del tipo dateTime y no debe estar entre comillas

Parece que Simple Salesforce no informa correctamente el mensaje de error original de Salesforce y solo Simple-Salesforce informa eventualmente los errores subsiguientes. (Todos los ejemplos verificados, pero no por simple-salesforce).