美文网首页
django 根据日月天统计数据

django 根据日月天统计数据

作者: forjie | 来源:发表于2019-10-29 15:38 被阅读0次

    利用Trunc统计日月周的数据

    django 官网地址https://docs.djangoproject.com/en/2.2/ref/models/database-functions/

    在统计数据中,我们会经常需要统计每天时间或者每月时间的数据,以前都是通过extra自己写select完成需求,现在有Trunc类,可以简单的实现统计的功能

    比如下面统计每年(统计每天就是换成TruncDate):

    >>> from datetime import datetime
    >>> from django.db.models import Count
    >>> from django.db.models.functions import TruncMonth, TruncYear
    >>> from django.utils import timezone
    >>> start1 = datetime(2014, 6, 15, 14, 30, 50, 321, tzinfo=timezone.utc)
    >>> start2 = datetime(2015, 6, 15, 14, 40, 2, 123, tzinfo=timezone.utc)
    >>> start3 = datetime(2015, 12, 31, 17, 5, 27, 999, tzinfo=timezone.utc)
    >>> Experiment.objects.create(start_datetime=start1, start_date=start1.date())
    >>> Experiment.objects.create(start_datetime=start2, start_date=start2.date())
    >>> Experiment.objects.create(start_datetime=start3, start_date=start3.date())
    >>> experiments_per_year = Experiment.objects.annotate(
    ...    year=TruncYear('start_date')).values('year').annotate(
    ...    experiments=Count('id'))
    >>> for exp in experiments_per_year:
    ...     print(exp['year'], exp['experiments'])
    ...
    2014-01-01 1
    2015-01-01 2
    

    在django.db.models.function中还有很多其他的方法

    TruncMonth : 月份 
    TruncYear : 年份
    TruncWeek :周(在django2.1中才有)
    TruncQuarter : 季度
    TruncHour
    TruncMinute
    TruncSecond
    TruncDay
    

    相关文章

      网友评论

          本文标题:django 根据日月天统计数据

          本文链接:https://www.haomeiwen.com/subject/vvqgvctx.html