передача переменной в операторе выбора SOQL с python и simple-salesforce - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь передать переменную в оператор SOQL, я использую библиотеку simple_salesforce. Мне нужно только получить данные, когда CreateDate of Opportunity> вчера, вчерашняя дата сохраняется в переменной last_run_day. Ниже мой код:

yesterday = date.today() + timedelta(days=-1)
last_run_date = yesterday.strftime("%Y-%m-%d"+"T"+"%H:%M:%S"+"Z")

sf_data = sf.query_all("SELECT ID, Name FROM Opportunity where probability > 0 AND CreatedDate > '%s' AND AdPoint_Id__c <> NULL ORDER BY AdPoint_Id__c" % last_run_date)
print(sf_data)

Дает мне ошибку: поле 'CreatedDate' должно иметь тип dateTime и не должно быть заключено в кавычки ", 'errorCode': 'INVALID_FIELD'

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Метод strftime фактически возвращает строку. Чтобы узнать тип объекта, вы можете использовать метод type

. Вы можете использовать эту строку кода в вашей программе для проверки типа print(type(last_run_date)), он вернет <class 'str'>, что означает его строковый объект.

Таким образом, в вашем запросе вы не можете присвоить строку дате и времени.

Вы можете попробовать использовать следующий код

import datetime
yesterday = datetime.datetime.now() + datetime.timedelta(days=-1)
sf_data = sf.query_all("SELECT ID, Name FROM Opportunity where probability > 0 AND CreatedDate > '%s' AND AdPoint_Id__c <> NULL ORDER BY AdPoint_Id__c" % yesterday)
print(sf_data)
0 голосов
/ 05 апреля 2020

вчера = date.today () + timedelta (days = -1)

sf_data = sf.query_all ("SELECT ID, имя из вероятности, где вероятность> 0 AND CreatedDate> YESTERDAY AND AdPoint_Id __ c <> NULL ORDER BY AdPoint_Id __ c ")

print (sf_data)

...