1. date:

首先查看数据库中article表的信息,由表中的create_time字段可以看出时间为2020.2.5

打印出查询的结果:

<QuerySet []>:但是查询的结果为空的QuerySet,这个的问题在于在我们的mysql数据库中没有存储关于时区的信息。

并且我们的django底层执行的sql语句为:SELECT article.id, article.title, article.content, article.category_id, article.create_time FROM article WHERE DATE(CONVERT_TZ(article.create_time, 'UTC', 'Asia/Shanghai')) = 2020-02-05,从我们的django底层执行的sql语句可以看出date方法又调用了CONVERT_TZ方法,将article.create_time字段的‘UTC’时区转换为‘Asia/Shanghai’时区,并且将date设置为2020-02-05.但是mysql数据库中并没有存储有关时区的数据。所以我们首先要先将有关时区的文件进行导入。

解决办法:1.windows系统:
浏览器中复制该url:https://dev.mysql.com/downloads/timezones.html,找到timezone_2019c_posix.zip - POSIX standard,点击进行下载,下载完成后,进行解压,并且将解压完成的所有文件复制到mysql文件中的:F:\mysql\mysql5.7-win32\data\mysql文件夹中,在进行粘贴之前可以先将mysql文件夹中的文件进行备份,以防粘贴之后mysql不能使用,如果遇到文件名相同的可以选择替换,之后将mysql服务进行重启。
再次运行项目,打印出结果为:

<QuerySet [<Article: <(Article: id: 1,title: Hello, content: 你好)>>, <Article: <(Article: id: 2,title: Hello World, content: 大家好)>>, <Article: <(Article: id: 3,title: 钢铁是怎样炼成的, content: 你好

)>>, <Article: <(Article: id: 4,title: 中国吸引力, content: 精彩极了

)>>]>, 此时就打印出了数据库表中满足条件的文章。

原生sql语句:SELECT article.id, article.title, article.content, article.category_id, article.create_time FROM article WHERE DATE(CONVERT_TZ(article.create_time, 'UTC', 'Asia/Shanghai')) = 2020-02-05

2.Linux或者是Mac系统:
在终端命令行窗口:mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -D mysql -u root -p ,输入密码,从系统中加载时区文件更新到mysql中。

2. year: 根据年份进行查找,示例代码如下:

from .models import Article, Category
from django.http import HttpResponse
from datetime import datetime, date
from django.utils.timezone import make_aware def index1(request):
# 查找create_time为2020年的文章
articles = Article.objects.filter(create_time__year=2020)
# 查找create_time大于等于2020年的文章
articles = Article.objects.filter(create_time__year__gte=2020)
print(articles)
print(articles.query)
return HttpResponse("success")

3.month: 根据月份进行查找,示例代码如下:

# 查找create_time为2月份的文章
articles = Article.objects.filter(create_time__month=2)
# 查找create_time大于等于2月份的文章
articles = Article.objects.filter(create_time__month__gte=2)

4. day:根据日期进行查找,示例代码如下:

# 查找create_time为2号的文章
articles = Article.objects.filter(create_time__day=2)
# 查找create_time大于等于2号的文章
articles = Article.objects.filter(create_time__day__gte=2)

5.week_day:Django 1.11新增的查找方式。同year,根据星期几进行查找。1表示星期天,7表示星期六,2-6表示星期一到星期五。示例代码如下:

# 查找星期三发布的所有文章
articles = Article.objects.filter(create_time__week_day=4)

6.time: 根据时间进行查找,示例代码如下:

在我们的数据库表中,所存储的时间为UTC时区的时间。因此在使用时间进行查找的时候我们可以通过加8个小时进行查找。

from datetime import time

articles = Article.objects.filter(create_time__time=time(hour=11, minute=4, second=59))
此时返回的结果:QuerySet为空,原因是在mysql数据库中存储的时间中的秒,精确到小数点后后六位,所以可以通过使用range区间的方式进行查找,区间可以使用range,以下代码实现:
    start_time = time(hour=11, minute=3, second=30)
end_time = time(hour=11, minute=3, second=31)
articles = Article.objects.filter(create_time__time__range=(start_time, end_time))
print(articles)
print(articles.query)
return HttpResponse("success")
此时打印出结果为:

<QuerySet [<Article: <(Article: id: 3,title: 钢铁是怎样炼成的, content: 你好)>>]>

执行的原生sql语句:SELECT article.id, article.title, article.content, article.category_id, article.create_time FROM article WHERE TIME(CONVERT_TZ(article.create_time, 'UTC', 'Asia/Shanghai')) BETWEEN 11:03:30 AND 11:03:31

68.ORM查询条件:date,time,year,week_day等的更多相关文章

  1. ORM查询条件

    模板: from django.db import models class Article(models.Model): title = models.CharField(max_length=20 ...

  2. 67.ORM查询条件:range的使用,使用make_aware将navie time 转换为aware time

    模型的定义,models.py文件中示例代码如下: from django.db import models # 在定义模型的类时,一定要继承models.Model class Category(m ...

  3. 69.ORM查询条件:isnull和regex的使用

    首先查看数据库中的article表的数据: 定义模型的文件models.py中的示例代码如下: from django.db import models class Category(models.M ...

  4. 64.Python中ORM查询条件:in和关联模型

    定义模型的models.py文件中示例代码如下: from django.db import models class Category(models.Model): name = models.Ch ...

  5. 65.ORM查询条件:gte,gt,lte和lt的使用

    1. gte: 代表的是大于等于,英文全称为:great than equal.举例:找到文章id大于等于3等文章,示例代码如下: 定义模型的示例代码如下: from django.db import ...

  6. django orm 的查询条件

    Django的ORM查询操作: 查询数据库操作是一个非常重要的技术.在Django中,查询一般就是使用filter.exclude.get三个方法来实现,在调用这些方法的时候传递不同的查询条件来实现复 ...

  7. django ORM常用查询条件

    假设有一个模型 class Article(models.Model): title=models.CharField(max_length=50) content=models.TextField( ...

  8. ORM查询简化

    文章出处 https://www.cnblogs.com/wupeiqi/articles/6216618.html 字段 常用字段 AutoField(Field) - int自增列,必须填入参数 ...

  9. Django(17)orm查询操作

    前言 查找是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时候传递不同的参数来实现查询需求.在ORM层面,这些查询条件都 ...

随机推荐

  1. Day6 - K - 陌上花开 HYSBZ - 3262

    有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美丽,当且仅Sa>= ...

  2. 基于AQS自己实现一个同步器

    前面说了这个多,我们可以自己尝试实现一个同步器,我们可以简单的参考一下ReentrantLock这个类的实现方式,我们就简单的实现一个不可重入的独占锁吧! 一.简单分析ReentrantLock的结构 ...

  3. 前端学习(22)~css问题讲解

    你是如何理解 HTML 语义化的? 语义化:指对文本内容的结构化(内容语义化),选择合乎语义的标签(代码语义化). 举例:段落用 p,边栏用 aside,主要内容用 main 标签. 好处: 便于开发 ...

  4. Asp.net mvc项目分页功能

    1.定义一个分页用的Page<T>类 /* 使用示例: var pager = new Pager<Article>( this.ControllerContext, //上下 ...

  5. Java8集合框架——LinkedHashMap源码分析

    本文的结构如下: 一.LinkedHashMap 的 Javadoc 文档注释和简要说明 二.LinkedHashMap 的内部实现:一些扩展属性和构造函数 三.LinkedHashMap 的 put ...

  6. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  7. 六、JavaScript之调用外部JavaScript文件

    一.外部JavaScript文件,不需要写<SCRIPT>标签,myScript.js代码如下: 二.index.php代码如下 三.运行效果如下 四.点击之后 myScript.php如 ...

  8. net GC 学习以及问题

    引用对象必要空间开销:对象指针.同步块索引 GC重要点: 每个应用程序包含一组根,每个根都是一个存储位置,其中包含指向引用类型对象的一个指针,该指针要么指向托管堆中的要给对象,要么为null.(这句话 ...

  9. scala 语言特性

    Scala 语言特性 Unit 表示无值, 等价于java, C++中的void Null 表示空值或空引用 Nothing 所有其他类型的子类型, 表示没有值 Any 所有类型的超类, 任何实例都属 ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-volume-down

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...