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

SS_*_*ous 1 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()
Run Code Online (Sandbox Code Playgroud)

当我尝试查询日期范围时,为什么我的代码在查询日期比在给定时更早或更小时工作?

col*_*fer 5

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

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