使用数据库列中的特定日期和时间,如何查询特定日期的所有记录?

时间:2015-06-24 08:51:08

标签: python sqlalchemy flask-sqlalchemy

令人费解的头衔。我正在使用python sqlalchemy和postgresql数据库。

我有一个存储Events的数据库,每个事件记录都有一个starttime和一个endtime列。上述两个列都采用以下格式:

2015-06-22 13:00:00

因此,如何从特定日期查询数据库中的所有Events。从而忽略了starttimeendtime列的“时间”部分?

例如我试过:

query = Event.query.filter(Event.starttime=='2015-06-22', Event.endtime=='2015-06-22').all()

然而,这得出0结果,我假设这可能是因为没有hh / mm / ss使得查询'假设'我的意思是00:00:00。

我也试过

query = Event.query.filter(Event.starttime>='2015-06-22', Event.endtime<='2015-06-22').all()

但是这也得出了0个结果,我假设与前一个结果相同。

任何帮助将不胜感激!

这是发送到DB的查询:

SELECT events.id AS events_id, events.summary AS events_summary, events.starttime AS events_starttime, events.endtime AS events_endtime, events.parentcal AS events_parentcal, events.userid AS events_userid 
FROM events 
WHERE events.starttime >= :starttime_1 AND events.endtime < :endtime_1

1 个答案:

答案 0 :(得分:0)

尝试使用实际的日期时间对象。 SQLAlchemy可以解释它们。

from datetime import datetime

starttime = datetime.strptime('2015-06-22', '%Y-%m-%d')
endtime = datetime.strptime('2015-06-23', '%Y-%m-%d')
query = Event.query.filter(Event.starttime>=starttime, Event.endtime<endtime).all()

有关解析日期时间字符串的更多信息,请查看docs