Python开发【Django】:时间处理
2017-02-24 10:40
363 查看
时间格式化
做博客后台时,需要经常对数据库里面的时间格式(2017-02-17 02:10:44.308638)进行处理,格式化成自己想要的时间(列如年月日),下面就来记录下如何对时间进行处理1、时间进行格式化分组
class Article(models.Model): nid = models.BigAutoField(primary_key=True) title = models.CharField(verbose_name='文章标题', max_length=128) summary = models.CharField(verbose_name='文章简介', max_length=255) read_count = models.IntegerField(default=0) comment_count = models.IntegerField(default=0) up_count = models.IntegerField(default=0) down_count = models.IntegerField(default=0) create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) blog = models.ForeignKey(verbose_name='所属博客', to='Blog', to_field='nid') category = models.ForeignKey(verbose_name='文章类型', to='Category', to_field='nid', null=True) type_choices = [ (1, "Python"), (2, "Linux"), (3, "OpenStack"), (4, "GoLang"), ] article_type_id = models.IntegerField(choices=type_choices, default=None) tags = models.ManyToManyField( to="Tag", through='Article2Tag', through_fields=('article', 'tag'), )
models.py DateTimeField类型
处理函数:
def home(request, site): """ 博主个人首页 :param request: :param site: 博主的网站后缀如:http://xxx.com/wupeiqi.html :return: """ # 生成三个字段nid,num,ctime 日期按照%Y-%m年月进行分组 date_list = models.Article.objects.raw( # raw执行原生SQL语句 'select nid, count(nid) as num,strftime("%Y-%m",create_time) as ctime from repository_article group by strftime("%Y-%m",create_time)') # date_format(create_time,"%Y-%m") # 上边是sqllist的方式,mysql把strftime更换为date_format即可 # date_list 提取数据的方法 for item in date_list: print(item.nid,item.num,item.ctime) # 4 1 2017 - 01 # 13 8 2017 - 02 # 7 1 2017 - 03
把日期格式,进行年月分组,并进行统计每组包含的个数
2、根据时间格式进行检索匹配
def filter(request, site, condition, val): ---snip--- elif condition == 'date': # mysql的执行方法 # article_list = models.Article.objects.filter(blog=blog).extra( # where=['date_format(create_time,"%%Y-%%m")=%s'], params=[val, ]).all() # extra 构造额外的查询条件或者映射,如:子查询 article_list = models.Article.objects.filter(blog=blog).extra( # val 传入的日期参数 如:2017-02 where=['strftime("%%Y-%%m",create_time)=%s'], params=[val, ]).all() # python两个%表示一个%的字符 var对应%s # 上面语句等同于 select * from article where strftime("%Y-%m",create_time)=2017-02
Article数据表中检索时间格式为2017-02的所有匹配的数据对象
相关文章推荐
- python +Django 搭建web开发环境初步,显示当前时间
- python +Django 搭建web开发环境初步,显示当前时间
- python +Django 搭建web开发环境初步,显示当前时间
- Django开发中时间的时区的处理
- python django项目中对时间的处理建议
- 关于使用Aptana+Pydev构建Python开发环境的更新(Django)
- Python+Django在windows下的开发环境配置图解
- Python天天美味(19) - 时间处理datetime
- 玩聚网目前也是基于Python的Django框架开发
- 玩聚网目前也是基于Python的Django框架开发
- python下的web开发框架-Django,创建项目
- 关于使用Aptana+Pydev构建Python开发环境(Django)
- 玩聚网目前也是基于Python的Django框架开发
- Python+Django在windows下的开发环境配置
- python下的web开发框架-Django,django模板的使用
- python下的web开发框架-Django,url配置
- 基于python、Django做Web开发
- 玩聚网目前也是基于Python的Django框架开发
- 玩聚网目前也是基于Python的Django框架开发
- Python 时间处理datetime实例