You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Django查询以匹配DateTime列的分钟字段?

Django DateTime字段分钟匹配查询解决方案

你只需将代码中的xxx替换为Django ORM内置的时间字段查找器created__minute即可实现需求,Django 3.2 + PostgreSQL 9.6的环境完全支持该特性。

修正后的完整代码如下:

import datetime
from datetime import timedelta
from django.db import models

class PriceQuoteManager(models.Manager):
    def get_prices_per_hour(self, item):
        now = datetime.datetime.now()
        end_time = now.replace(second = 0, microsecond = 0)
        start_time = end_time - timedelta(days=1)
        return PriceQuote.objects.filter(
            item=item,
            created__range=[start_time, end_time],
            created__minute=end_time.minute
        )

class PriceQuote(models.Model):
    # 其他字段定义
    created = models.DateTimeField(null=False, default=datetime.datetime.now)
    # 绑定自定义管理器
    objects = PriceQuoteManager()

补充说明:

  • __minute是Django针对DateTime/Time类型字段内置的查找规则,底层会自动生成对应PostgreSQL的EXTRACT('minute' FROM created) SQL逻辑,匹配字段的分钟部分值。
  • 若项目开启了时区配置USE_TZ = True,该查找会自动将存储的UTC时间转换为项目配置的时区后再提取分钟值,符合业务时区要求。
  • 注意原代码中的PriceQuoteManager需要继承models.Manager才能正常作为模型管理器使用,需要补上继承关系。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:48:02