使用Sqlalchemy查询time1和time2之间的数据时存在一些问题

2024-10-05 11:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据库是SQLServer2008

我想在数据库中查询的时间字符类型(如finishdate)是datetime2

我只需要介于“10-11”和“10-17”之间的数据。 当使用Sqlalchemy时,我使用

cast(FinishDate, DATE).between(cast(time1, DATE),cast(time2, DATE))

查询日期,但不返回任何数据(我确认必须有一些数据语句满足查询时间范围

===========================================================================

from sqlalchemy import DATE


bb = "2021-10-11 12:21:23"  
cc = "2021-10-17 16:12:34"  
record = session.query(sa.Name cast(sa.FinishDate, DATE)).filter(
                cast(sa.SamplingTime, DATE).between(cast(bb, DATE), cast(cc, DATE)),
                sa.SamplingType != 0
            ).all()

record = session.query(sa.Name cast(sa.FinishDate, DATE)).filter(
                cast(sa.SamplingTime, DATE)>= cast(bb, DATE),
                sa.SamplingType != 0
            ).all()

两者都返回[]

我的代码有点问题,我不知道是什么问题


Tags: 数据name数据库datesession时间sabetween
1条回答
网友
1楼 · 发布于 2024-10-05 11:37:25

它对我有效,我只更改了你使用的日期

from sqlalchemy import Date
record = session.query(
    sa.Name cast(sa.FinishDate, Date)
 ).filter(
    cast(sa.SamplingTime, Date).between(
        cast(bb, Date), cast(cc, Date)
    ),
    sa.SamplingType != 0
 ).all()

事实上,cast的第一个参数也可以是字符串,所以在本例中,可以在cast中以字符串形式传递日期

:param expression: A SQL expression, such as a
         :class:`_expression.ColumnElement`
         expression or a Python string which will be coerced into a bound
         literal value.

相关问题 更多 >

    热门问题