【发布时间】:2019-10-16 13:38:45
【问题描述】:
我正在尝试根据 DateTime 字段获取数据!我为此编写了以下脚本:
import datetime as dt
from dasboard.models import Visionsystem
from django.utils.timezone import make_aware
min_dt = dt.datetime.combine(dt.date.today(), dt.time(7, 15))
max_dt = dt.datetime.combine(dt.date.today(), dt.time(15, 44))
# Changing format for Django
min_dt_aware = make_aware(min_dt)
max_dt_aware = make_aware(max_dt)
# Fetching all the data between 7:15:00 to 15:44:00 for current day
l1 = Visionsystem.objects.filter(start_datetime__range=(min_dt_aware, max_dt_aware))
print(l1) 产生 空列表 并检查 str(l1.query) 给出:
'SELECT `visionsystem`.`id`, `visionsystem`.`Start_Datetime` ... FROM `visionsystem` WHERE
`visionsystem`.`Start_Datetime` BETWEEN 2019-10-16 01:45:00 AND 2019-10-16 10:14:00'
所需的查询是:
'SELECT `visionsystem`.`id`, `visionsystem`.`Start_Datetime` ... FROM `visionsystem` WHERE
`visionsystem`.`Start_Datetime` BETWEEN 2019-10-16 07:15:00 AND 2019-10-16 15:44:00'
我不明白为什么 Django-ORM 使用 不同的时间 进行查询,那么指定的时间是什么?
我的时区设置(在 settings.py 中):
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我该如何解决这个问题,从 7:15:00 到 15:44:00 获取当天所需的数据> ?注意:我正在使用 MySQL 数据库!!
models.py 文件:
from django.db import models
class Visionsystem(models.Model):
start_datetime = models.DateTimeField(db_column='Start_Datetime', blank=True, null=True)
class Meta:
managed = False
db_table = 'visionsystem'
【问题讨论】:
-
你能展示你的 Visionsystem models.py 文件吗?
-
另外,您的数据库使用的是 SQLite 还是 Postgres?
-
@NicoGriffioen 我已经添加了 models.py 文件的代码!!我正在使用 MySQL 数据库!
标签: django django-orm datetime-format