Python 当参数为datetime.date时,SQLAlchemy将丢失查询中的数据

Python 当参数为datetime.date时,SQLAlchemy将丢失查询中的数据,python,postgresql,datetime,sqlalchemy,Python,Postgresql,Datetime,Sqlalchemy,我有一个事务模型,其中一个字段是 transaction_date = Column('transaction_date', sa.types.DateTime(timezone=True), nullable=False) 数据库字段看起来像 5e5993e5-a05d-4e1a-b934-7179566d6315 | Car loan |

我有一个
事务
模型,其中一个字段是

transaction_date = Column('transaction_date',
                           sa.types.DateTime(timezone=True),
                           nullable=False)
数据库字段看起来像

 5e5993e5-a05d-4e1a-b934-7179566d6315 | Car loan                      | 2013-08-20 13:31:16.97-07  |             |  428.00 | t     | bd675d42-aa9b-11e2-9d27-b88d1205c810 | 26c03288-86f8-4881-b5de-48e9afb11d88 | 2013-08-21 17:31:17.138526-07
 162d3409-2d73-4922-9147-52a391f86d34 | Bharat bazar                  | 2013-08-21 20:39:21.465-07 |             |    6.84 | t     | bd675d42-aa9b-11e2-9d27-b88d1205c810 | 20fe3330-80e1-4908-9f57-5b7ef575b197 | 2013-08-22 00:39:23.287429-07
 3a6c21e1-2ee6-4217-8a0e-fde13365263b | 7 eleven                      | 2013-08-23 13:53:26.593-07 |             |   26.03 | t     | bd675d42-aa9b-11e2-9d27-b88d1205c810 | 1e73aa3f-06f5-4019-828a-3f4f4d5cbe2e | 2013-08-23 17:53:29.200293-07
 ad261739-9ab2-4d13-b9c8-4809b3d7a066 | Vitamin shoppe                | 2013-08-24 12:47:52.74-07  |             |    5.46 | t     | bd675d42-aa9b-11e2-9d27-b88d1205c810 | 3141359d-9df6-4425-9261-518ccda847df | 2013-08-24 16:47:56.430282-07
 94c721a5-5cd2-41ac-b842-5989294ec978 | T2                            | 2013-08-31 16:30:41.435-07 |             |  200.00 | t     | bd675d42-aa9b-11e2-9d27-b88d1205c810 | 15147702-8227-4ee8-8b05-d2e8d532bd0a | 2013-11-24 00:30:41.457085-08
我编写的以下代码返回两个日期之间的事务

def get_transactions_for_dates(user, start, end):
        if start > end:
            raise ValueError('start date should not be greater than end date')

        return db.session.query(Transaction) \
            .filter(Transaction.user == user) \
            .filter(Transaction.transaction_date >= start) \
            .filter(Transaction.transaction_date <= end) \
            .order_by(Transaction.transaction_date.desc()).all()
我记录查询并通过
sqlalchemy

INFO:sqlalchemy.engine.base.Engine:SELECT transactions.uuid AS transactions_uuid, transactions.name AS transactions_name, transactions.transaction_date AS transactions_transaction_date, transactions.created_on AS transactions_created_on, transactions.modified_on AS transactions_modified_on, transactions.amount AS transactions_amount, transactions.debit AS transactions_debit, transactions.user_id AS transactions_user_id, transactions.category_id AS transactions_category_id 
FROM transactions 
WHERE %(param_1)s = transactions.user_id AND transactions.transaction_date >= %(transaction_date_1)s AND transactions.transaction_date <= %(transaction_date_2)s ORDER BY transactions.transaction_date DESC
INFO:sqlalchemy.engine.base.Engine:{'transaction_date_1': datetime.date(2013, 8, 1), 'transaction_date_2': datetime.date(2013, 8, 31), 'param_1': 'bd675d42-aa9b-11e2-9d27-b88d1205c810'}
INFO:sqlalchemy.engine.base.Engine:SELECT categories.uuid AS categories_uuid, categories.name AS categories_name, categories.parent AS categories_parent, categories.created_on AS categories_created_on 
FROM categories 
INFO:sqlalchemy.engine.base.engine:选择transactions.uuid作为事务\u uuid,transactions.name作为事务\u name,transactions.transaction\u日期作为事务\u事务\u日期,transactions.created\u on作为事务\u created\u on,transactions.modified\u on作为事务\u modified\u on,transactions.amount作为事务\u金额,transactions.debit AS transactions\u debit,transactions.user\u id AS transactions\u user\u id,transactions.category\u id AS transactions\u category\u id
来自交易

其中%(参数1)s=transactions.user_id AND transactions.transaction_date>=%(transaction_date_1)s和transactions.transaction_date使用
datetime.datetime
而不是
datetime.date
,并将结束日期的时间指定为晚上11:59

问题是,
datetime.date
在比较之前会自动转换为
datetime.datetime
,并填充在00:00am,基本上结束日期的时间不会早于此

INFO:sqlalchemy.engine.base.Engine:SELECT transactions.uuid AS transactions_uuid, transactions.name AS transactions_name, transactions.transaction_date AS transactions_transaction_date, transactions.created_on AS transactions_created_on, transactions.modified_on AS transactions_modified_on, transactions.amount AS transactions_amount, transactions.debit AS transactions_debit, transactions.user_id AS transactions_user_id, transactions.category_id AS transactions_category_id 
FROM transactions 
WHERE %(param_1)s = transactions.user_id AND transactions.transaction_date >= %(transaction_date_1)s AND transactions.transaction_date <= %(transaction_date_2)s ORDER BY transactions.transaction_date DESC
INFO:sqlalchemy.engine.base.Engine:{'transaction_date_1': datetime.date(2013, 8, 1), 'transaction_date_2': datetime.date(2013, 8, 31), 'param_1': 'bd675d42-aa9b-11e2-9d27-b88d1205c810'}
INFO:sqlalchemy.engine.base.Engine:SELECT categories.uuid AS categories_uuid, categories.name AS categories_name, categories.parent AS categories_parent, categories.created_on AS categories_created_on 
FROM categories