gpt4 book ai didi

python:需要帮助以正确的方式实现 strptime()

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:33 25 4
gpt4 key购买 nike

我试图找出当前日期和我从数据库 (postgresql) 中提取的日期之间的天数差异

这是我的代码:

    cur.execute('select id, city_id, event_id, duration, DATE(startdate) from main_cityevent where DATE(startdate) <= DATE(NOW())')
rows = cur.fetchall()
for city_event in rows:
startdate = str(city_event[4])
sd = datetime.strptime(startdate, "%Y-%m-%d")
diff = datetime.datetime.now() - sd

最后一个命令 (diff = datetime.datetime.now() - sd) 给我一个 AttributeError。

我做错了什么?

最佳答案

您可能正在导入 datetime.datetime(类)而不是 datetime(模块)。

通过始终导入 datetime 模块,您可以同时使用 datetime.datetimedatetime.date,这更适合您的情况, 并且有一个很好的 .today() 方法。

而且您不需要整个 str() -> strptime() 行程,因为它应该已经是一个 python 日期对象。

此外,您可以减去查询中的日期并得到天数差值:

postgres=# select '2011-07-05'::date - current_date;
?column?
----------
59
(1 row)

所以你的查询应该是这样的

SELECT id, city_id, event_id, duration, DATE(startdate)-CURRENT_DATETIME AS days FROM main_cityevent WHERE DATE(startdate) <= DATE(NOW())

有关 postgres 日期/时间函数的完整描述,请参阅 here

在相关说明中,为什么需要在查询中强制转换“startdate”?将其存储为字符串、时间戳或其他内容吗?如果是约会,就应该这样对待。对于正确性和性能,类型在 RDBMS 中很重要。您可以(至少)通过减去日期和日期时间来获得差一错误。

关于python:需要帮助以正确的方式实现 strptime(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921936/

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