我有以下查询:
query_news = sa.select([relaciones_laborales.c.PersonalPerId])
.where(relaciones_laborales.c.RelLabFch.between(sa.bindparam('p1d'),sa.bindparam('p2d')))
如果我更正,则不包括BETWEEN
中的界限,例如范围表示法(p1d,p2d),而不是[p1d,p2d]。
假设我想写一个表示范围[p1d,p2d]的条件,其RelLabFch属性大于或等于p1d且小于p2d,我需要明确地写出这样的条件:< / p>
query_news = sa.select([relaciones_laborales.c.PersonalPerId])
.where(relaciones_laborales.c.RelLabFch.between(sa.bindparam('p1d'), sa.bindparam('p2d')) | relaciones_laborales.c.RelLabFch == sa.bindparam('p1d'))
是否有更简单的方法来编写代表[p1d, p2d)
的上述代码,与>= p1d AND < p2d
相同?
答案 0 :(得分:1)
使用SQL BETWEEN运算符将以包含的方式计算范围。
BETWEEN 10 AND 20
与[10,20]相同。
要编写代表[10,20]的简单查询,您可以按照Ilja Everilä的建议执行以下操作。
query_news = sa.select([relaciones_laborales.c.PersonalPerId])
.where(relaciones_laborales.c.RelLabFch >= sa.bindparam('p1d') & \
relaciones_laborales.c.RelLabFch < sa.bindparam('p2d'))