如何在Django中筛选两个datetime列日期相同的QuerySet?
Django筛选datetime列日期相同的QuerySet方法
你之前尝试的两种写法都无法生效,原因是F()表达式不支持直接使用__date这类字段查找后缀。要实现两个datetime列日期相同的筛选,推荐以下两种可行方案:
方案一:使用TruncDate函数
从django.db.models.functions导入TruncDate,通过它提取datetime字段的日期部分进行比较:
from django.db.models.functions import TruncDate drivers = drivers.filter( TruncDate('deleted_at') == TruncDate('created_at') )
方案二:使用Cast函数
将datetime字段直接转换为Date类型后再比较,需要从django.db.models导入DateField和Cast:
from django.db.models import DateField, Cast drivers = drivers.filter( Cast('deleted_at', output_field=DateField()) == Cast('created_at', output_field=DateField()) )
这两种方法都会生成对应的SQL语句,准确对比两个字段的日期部分,筛选出符合条件的记录。
内容的提问来源于stack exchange,提问作者Laurent Lyaudet
相关产品推荐
相关产品推荐

