我有一张包含预定付款和过去付款的表格,我需要找出在同一周内是否有针对同一用户/合同的任何两项费用。
select count(*) from charge as c1, charge as c2
where c1.id_contract = c2.id_contract
and c1.status = 'SUCCESS'
and c2.status in ('SUCCESS', 'PENDING', 'WAITING')
and c1.id > c2.id and c2.due_time > (c1.due_time - interval 7 day);
我很难在 sqlalchemy 中重现此查询,主要是因为我找不到如何以与数据库无关的形式将 MySQL 的“间隔”转换为 SQLAlchemy。
到目前为止,我想出了这个,它可以翻译所有内容,但间隔:
db.session.query(Charge, OldCharge).filter(Charge.id_contract == OldCharge.id_contract, Charge.status=='WAITING', OldCharge.status.in_(('SUCCESS', 'PENDING')), Charge.id > OldCharge.id).count()
有任何想法吗?