gpt4 book ai didi

sql - Django 查询 : how do I find the maximum time duration from start and end time fields?

转载 作者:行者123 更新时间:2023-12-02 01:22:21 25 4
gpt4 key购买 nike

这是我的 Django 模型:

class Shift(models.Model):
worker = models.OneToOneField('Worker',null=True)
date = models.DateField(null=True)
shiftTime = models.CharField(max_length=10, default="N/A")
timeIn = models.TimeField(null=True)
timeOut = models.TimeField(null=True)

我需要找到在给定日期范围内在办公室花费最多时间的员工。如何从 Django 查询中的 timeIn 和 timeOut 字段计算持续时间?

编辑:我不想使用另一个属性 duration 因为那似乎是多余的。除了使用原始查询或持续时间属性之外,还有其他方法吗?

最佳答案

Django 1.10 引入了 natively do date/time diffs 的能力通过 ORM。此查询将使您获得最长的类次:

from django.db.models import DurationField, ExpressionWrapper, F

longest_shift = Shift.objects.annotate(shift_length=ExpressionWrapper(
F('timeOut') - F('timeIn'),
output_field=DurationField()))\.
order_by('-shift_length').first()

您可以根据需要通过在 annotate() 之前添加 filter() 子句来为特定日期范围添加过滤器。

关于sql - Django 查询 : how do I find the maximum time duration from start and end time fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213525/

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