zoukankan      html  css  js  c++  java
  • python测试开发django-79.ORM查询之datetime()格式化(extra )

    前言

    django 查询数据库的时候,数据存的是 datetime() 日期格式的数据 '2020-06-22 22:34:14'
    但是我们用 ORM 查询的时候,查询出来的结果是 'datetime.datetime(2020, 6, 22, 22, 34, 14)}' 跟我们预期的结果不符合。
    如果每次对查询的结果日期格式后再输出会比较麻烦,最好的解决办法是在查询的时候对日期格式化,这样查询的结果就不用二次处理

    问题描述

    使用 sql 查询,数据库里面的日期格式是'2020-06-22 22:34:14'

    SELECT * from yoyo_card where card_user = 'yoyo2';

    使用 django 查询的结果是 'add_time': datetime.datetime(2020, 6, 22, 22, 34, 14)

    Card.objects.filter(card_user='yoyo2').values()

    MyDjango>python manage.py shell
    >>> from yoyo.models import Card
    >>> 
    >>> Card.objects.filter(card_user='yoyo2').values()
    <QuerySet [{'id': 2, 'card_id': '520000000001', 'card_user': 'yoyo2', 'add_time': datetime.datetime(2020, 6, 22, 22, 34, 14)}]>
    >>>
    

    我们期望查询的结果,日期应该显示 格式化后的字符串 'add_time': '2020-06-22 22:34:14'

    使用 extra 查询

    先用 sql 的 DATE_FORMAT 查询,把日期格式化

    SELECT card_id, card_user, DATE_FORMAT(add_time, '%Y-%m-%d %H:%i:%s')  as add_time
    from yoyo_card where card_user = 'yoyo2';
    

    那么对应 django 的 extra 查询,% 是python操作符,这里用两个%%表示

    Card.objects.filter(card_user='yoyo2').extra(select={'add_time':'DATE_FORMAT(add_time, "%%Y-%%m-%%d %%H:%%i:%%s")'})

    # 作者-上海悠悠 QQ交流群:717225969
    MyDjango>python manage.py shell
    >>> from yoyo.models import Card
    >>>
    >>> Card.objects.filter(card_user='yoyo2').extra(select={'add_time':'DATE_FORMAT(add_time, "%%Y-%%m-%%d %%H:%%i:%%s")'}).values('card_id', 'card_user', 'add_time')
    <QuerySet [{'add_time': '2020-06-22 22:34:14', 'card_id': '520000000001', 'card_user': 'yoyo2'}]>
    >>>
    

    这样查询到的日期结果就会显示字符串 'add_time': '2020-06-22 22:34:14'

  • 相关阅读:
    Android项目实战(五十五):部分机型点击home再点图标进入程序不保留再之前界面的问题
    Android项目实战(五十四):zxing 生成二维码图片去除白色内边距的解决方案
    关于RecyclerView嵌套导致item复用异常,界面异常的问题
    191114
    191112
    191111
    191110
    191109
    191108
    191107
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13215719.html
Copyright © 2011-2022 走看看