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

How to query dates range using peewee?

我有 SQLite 数据库,其中的表包含日期。我想要 ot select 个属于特定范围的记录,但我无法编写正确的查询。

# 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()

为什么我的代码在查询比给定的日期更小或更小的日期时有效,而当我尝试查询日期范围时却失败了?

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

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