【发布时间】:2020-09-05 19:52:38
【问题描述】:
我正在使用 SQLAlchemy,并且无法在不将其视为 DATETIME 的情况下过滤 TIME 列。
我将类定义为
class v_MyView(Base):
__table__ = Table('MyView', Base.metadata,
Column('id', Integer, primary_key=True),
Column('EntryDateTime', DateTime),
Column('EntryDate', Date),
Column('EntryTime', Time),
...
如果我这样做
results = db.query(v_MyView).first()
print(results.EntryTime)
我按预期得到datetime.time(15, 30, 22, 560000)
但是如果我这样做
results = db.query(v_MyView).filter(v_MyView.EntryTime >= datetime.time(5,0)).first()
print(results.EntryTime)
我收到一个错误
[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The data types time and datetime2
are incompatible in the greater than or equal to operator. (402) (SQLExecDirectW)
查看生成的查询,我明白了
WHERE [v_MyView].[EntryTime] >= ?]
[parameters: (datetime.datetime(1900, 1, 1, 5, 0),)]
检查过滤器似乎是正确生成的
right: BindParameter('%(140718484304128 EntryTime)s', datetime.time(5, 0), type_=Time())
是我遗漏了什么还是这是一个错误?
【问题讨论】:
标签: python sql-server datetime sqlalchemy