У меня есть таблица mysql, представляющая редакционные статьи и их метаданные, такие как название, автор и дата.Как фильтровать поле datetime +/- datetime с помощью SQLalchemy
У меня есть другая таблица, представляющая метрики (например, количество просмотров) об этих статьях, рассчитанных в разные моменты времени. Каждая строка представляет собой запись этих показателей для конкретной статьи в определенный момент времени.
Я хочу получить все строки таблицы метрик, где поле метрики строки метрики находится в течение двух часов, происходящих через один час после поля, связанного с датой соответствующей статьи. Я хотел бы сделать это с помощью SQLalchemy.
Мой текущий запрос SQLAlchemy выглядит следующим образом:
import sqlalchemy as sa
import models as m
s = session()
q = (s.query(m.Article.fb_shares, func.avg(m.ArticlesMetric.views)),
.join(m.ArticlesMetric)
.filter(sa.between(m.ArticlesMetric.tstamp,
m.Article.created + timedelta(hours=1),
m.Article.created + timedelta(hours=3))
)
.group_by(m.Article.id))
result = q.all()
s.close()
Однако это приводит к следующей ошибке:
Warning: (1292, u"Truncated incorrect DOUBLE value: '1970-01-01 05:30:00'")
MySql внутренне преобразующий различных типов в парном разряде, прежде чем сделать сравнение когда выполняется сравнение между различными типами. Я считаю, что эта ошибка как-то является результатом использования timedelta, но я не уверен, как еще я могу добиться того, что я пытаюсь сделать. Любые предложения очень приветствуются.
Как вы определили столбцы 'm.Article.created' и' m.ArmetMetric.tstamp'? – julienc
'created = Column (DateTime)' – vaerek
А как насчет 'm.ArticlesMetric.tstamp'? – julienc