【问题标题】:get sum of interval between two DateTimeFields获取两个 DateTimeFields 之间的间隔总和
【发布时间】:2014-12-19 15:20:34
【问题描述】:

我有一个带有book_startbook_end 字段的Booking 模型,两者都是DateTimeFields。我的目标是获得所有预订时间(所以基本上是所有 book_startbook_end 字段之间的间隔总和)。框架是否可能以某种方式实现这一点,还是我必须以编程方式告诉这一点(例如,读取 all 时间戳,计算它们之间的间隔,并从中得出总和)?

【问题讨论】:

    标签: python django python-3.x sqlite django-1.7


    【解决方案1】:

    你可以试试.extra()

    Booking.objects.all().extra(select={'bookedhours': 'SUM(booking_end  - booking_start) * 3600'}).values('bookedhours')
    

    这会生成如下查询:

    SELECT (SUM(booking_end  - booking_start)) AS `bookedhours` FROM `my_application_booking`
    

    我不太确定结果的单位,你应该测试一下。

    【讨论】:

    • 这就是我现在正在尝试的,问题是我需要使用 SQLite 的 strftime() 函数,并将 '%s' 作为参数传递:'booked_amount': 'strftime(\'% s\', end_ts) - strftime(\'%s\', start_ts)' 不幸的是我还没有找到 Python/Django 方法来实现这一点(我在 Django shell 中得到了 StopIteration)
    • @GergelyPolonkai 作为旁注,您可以通过打印 queryset.query 字段来检查生成查询并在 dbshel​​l 中尝试
    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2017-10-19
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多