我有一个带有DataTimeField的表。我想获得DateTimeField =特定日期的所有对象的列表(忽略时间部分)。
SQL看起来像:
select * from tblname where date(start)='2011-01-14'
是否可以让ORM进行此类查询?
我可以做一个start__range(...)类型的查询,但我想知道我是否可以这样做。
答案 0 :(得分:4)
Entry.objects.filter(pub_date__year=2005)
Entry.objects.filter(pub_date__month=12)
Entry.objects.filter(pub_date__day=6)
适用于日期和日期时间。
答案 1 :(得分:2)
MyModel.object.filter(start__year=2011, start__month=01, start__day=14)
此查询的问题在于,如果您的数据库不使用函数(Hello MySQL)支持索引,则您有一个不合适的查询。
一种替代方法是添加新字段start_date = models.DateField(...)
并重载save(...)
方法以正确设置字段,或者如果您更像数据库端开发,则使用相同函数的触发器在此之后,你可以这样做:
MyModel.object.filter(start_date=date(2011, 1, 13))