gpt4 book ai didi

python - 两个日期之间的 SQLALCHEMY 查询

转载 作者:行者123 更新时间:2023-11-29 06:18:22 28 4
gpt4 key购买 nike

我看了那个链接

这很奇怪,因为我正在做的查询是偶然的。如果仅相差几天,则无法显示日期

SQLAlchemy: how to filter date field?

型号:

class UserCallsModel(db.Model):
id = db.Column(db.Integer, primary_key = True)
date = db.Column(db.String(90))
username = db.Column(db.String(90))
event_name = db.Column(db.String(90))

查询:

users = UserCallsModel.query.filter(UserCallsModel.date.between("2016-1-1",  "2016-1-20")).order_by(UserCallsModel.date.desc())

我有 2 个日期在此范围内但没有被查询?

最佳答案

我不熟悉 MySQL,但我想它与我在下面包含输出的 PG 相同。

当您使用“between”方法时,您最终会使用“BETWEEN”运算符,就像这样...

SELECT * FROM my_table WHERE date BETWEEN '2016-1-1' AND '2016-1-20'

问题是“between”运算符对日期和字符串做了不同的事情。例如,如果它正在测试的值是一个字符串,它将把参数('2016-1-1' AND '2016-1-20' 部分)视为字符串。

mhildreth=# select '2016-1-5' between '2016-1-1' AND '2016-1-10';
?column?
----------
f
(1 row)

与此同时,如果它正在测试的值是一个日期对象,那么它将隐式地将字符串转换为日期对象,基本上执行以下操作......

mhildreth=# select '2016-1-5'::date between '2016-1-1'::date AND '2016-1-10'::date;
?column?
----------
t
(1 row)

因此,我的猜测是您想将“日期”列转换为日期类型。如果您必须将其保留为字符串,则需要确保您使用的日期格式在进行字符串比较时也适用。因此,您需要 2016-01-01 而不是 2016-1-1

关于python - 两个日期之间的 SQLALCHEMY 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com