繁体   English   中英

通过本地时区中的 DateTimeField 过滤数据 [DJANGO]

[英]Filter Data via DateTimeField in Local Timezone [DJANGO]

日期和时间以 UTC 格式保存在 MySQL 数据库中。 我需要根据用户时区过滤通过日期保存的对象。 例如,位于“非洲/拉各斯”时区的 John 在当地时间 2021 年 2 月 1 日凌晨 12:00 进行了一笔交易,该交易将作为 2021 年 1 月 31 日 23:00 UTC 保存在数据库中。 当我在 2021 年 2 月 1 日运行以下查询时,由于 +1 小时的差异,它不会出现。

time_zone = pytz.timezone("Africa/Lagos")
today_date = timezone.now().astimezone(time_zone).date()
today_transaction = Credit.objects.filter(created_date__contains=today_date) 

今天的日期是 2021 年 2 月 1 日。但由于它是以 UTC 保存在数据库中的,因此不会返回本地时区的确切日期。 查询将返回 []。 它应该能够返回 2021 年 1 月 31 日 23:00 UTC 保存的信用 obj。

是否可以在数据库级别进行转换 today_date ? 我错过了什么?

日期和时间以 UTC 格式保存在 MySQL 数据库中。 我需要根据用户时区过滤通过日期保存的对象。 例如,位于“非洲/拉各斯”时区的 John 在当地时间 2021 年 2 月 1 日凌晨 12:00 进行了一笔交易,该交易将作为 2021 年 1 月 31 日 23:00 UTC 保存在数据库中。 当我在 2021 年 2 月 1 日运行以下查询时,由于 +1 小时的差异,它不会出现。

time_zone = pytz.timezone("Africa/Lagos")
today_date = timezone.now().astimezone(time_zone).date()
today_transaction = Credit.objects.filter(created_date__contains=today_date) 

今天的日期是 2021 年 2 月 1 日。但由于它是以 UTC 保存在数据库中的,因此不会返回本地时区的确切日期。 查询将返回 []。 它应该能够返回 2021 年 1 月 31 日 23:00 UTC 保存的信用 obj。

是否可以在数据库级别进行转换 today_date ? 我错过了什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM