如何使用peewee查询日期范围?

时间:2016-09-06 05:45:58

标签: sql sqlite python-3.x peewee

我有SQLite数据库,其中包含包含日期的表。我想要选择落在特定范围内的记录,但我没有写出正确的查询。

# This query returns nothing
rows = model.select().where(  
                 (model.date.between(start_date, end_date)) & 
                 (model.name == point_name)
         ).tuples()


# This query returns nothing too
rows = model.select().where(  
                 (model.date > start_date) &
                 (model.date < end_date) &
                 (model.name == point_name)
         ).tuples()


# However tis one works:
rows = model.select().where(  
             (model.date > start_date) &
             (model.name == point_name)
         ).tuples()

当我尝试查询日期范围时,为什么我的代码在查询日期比在给定日期或者小于给定日期时有效?

1 个答案:

答案 0 :(得分:5)

您如何在数据库中存储日期?这是一个预先存在的数据库,还是您使用Peewee插入所有记录?我问,因为SQLite可以将日期表示为字符串或数字(时间戳)。如果你使用字符串,那么日期必须按字典顺序排序以进行有意义的比较......这就是为什么Peewee使用YYYY-mm-dd。

如果您的日期排序正确,那么如果您想要包含端点,则应该可以使用.between()。否则你可以(date_field > low) & (date_field < high)