【发布时间】:2019-11-16 08:05:10
【问题描述】:
我的表中有一个 UTC 日期时间列表。我想在 local 时区获取不同的日期,并再次获取每个日期的条目数,对于 local 时区。
我确定我把这个问题复杂化了,但我对 Python 和 SQLAlchemy 还是很陌生,更不用说日期、时间和时区了。
我正在使用带有 default=utcnow() 的列将我的时间戳存储在 UTC...这很好用:2019-07-05 06:19:59.920630
我什至可以根据需要(在应用程序的其他部分)在浏览器的当前时区显示时间戳。
但是,我正在尝试根据时区运行 SQLAlchemy 查询,以获取该用户当地日期的条目。
2019-07-05 06:19:59.920630 可以使用我的 utc_to_local 辅助函数转换为 2019-07-04 23:19:59.920630...所以我需要我的查询在我的查询中包含该日期时间条目“2019 年 7 月 4 日”的记录
所以我运行 SQLAlchemy 查询来获取不同日期的列表
>>>uniquedays=db.session.query(func.distinct(func.DATE(TableClass.timestamp))).all()
但我刚刚意识到这是返回的日期列表可能没有用户区域设置的任何记录......在我的示例中,7 月 5 日没有我的时区的任何条目 - 但它被返回为独一无二的一天。
所以我也可以像这样返回日期时间列表:
>>>datetimelist = db.session.query(TableClass.timestamp).all()
但现在我刚刚得到了这个日期时间(我假设)元组的列表:
>>>datetime
[(datetime.datetime(2019, 6, 30, 21, 8, 11, 354018),), (datetime.datetime(2019, 6, 30, 21, 21, 58, 158467),), (datetime.datetime(2019, 6, 30, 23, 39, 8, 310248),)....................
我正在使用它来将 utc 日期时间转换为我的本地时间:
def utc_to_local(utc_dt):
return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)
我现在正在使用 SQLite,但打算切换到 MySQL 数据库进行生产。
【问题讨论】:
-
您使用的是哪个数据库?
-
我现在正在使用 SQLite,但稍后将连接到 MySQL。好问题-添加到我的原始帖子中。 SQLAlchemy 不应该为我粗略处理这些差异吗?
标签: python datetime flask sqlalchemy timezone