Примечание: ваш date
является целым числом, передача его в datetime.strptime(date, '%Y%m%d')
не сработает, вы получите TypeError: strptime() argument 1 must be string, not int
.Вам нужно будет использовать строку, а не int.Но это не совсем проблема.
В хранилище данных есть столбец поля даты с этим форматом 2018-02-20 (11: 07: 36.000) MMT
Формат не имеет значения, вы не должны работать со свойствами метки времени в виде строк.Другими словами, вам не нужно использовать strftime/strptime
.Вместо этого вы должны обращаться с ними как с datetime
объектами.Вы можете найти пример в Ограничения на запросы :
start_date = datetime.datetime(1990, 1, 1)
end_date = datetime.datetime(2000, 1, 1)
query = client.query(kind='Task')
query.add_filter(
'created', '>', start_date)
query.add_filter(
'created', '<', end_date)
Еще одно важное замечание: ваш запрос с добавленными фильтрами никогда не даст никакого результата: нет 'date'
значение свойства может одновременно быть больше или меньше того же другого значения - вашего datetime.strptime(date, '%Y%m%d').strftime('%Y-%m-%d')
, присутствующего в обоих фильтрах.Вам необходимо указать 2 разных значений начальной и конечной отметок времени в 2 фильтрах.
Адаптируя приведенный выше пример для вашего вопроса, он будет выглядеть примерно так:
query.add_filter('date', '>=', date)
query.add_filter('date', '<', date + datetime.timedelta(days=1))
, и вы зададите 'date'
как datetime
:
date = datetime.datetime(2018, 10, 12)