zoukankan      html  css  js  c++  java
  • postgresql-按照小时分组统计

    简单的问题描述:

    1. Django后台配置的上海时间

    2. postgresql采用了默认UTC时间

    3. 后台跟数据库差了8个小时,页面显示没得问题

    4. 当通过orm执行原生SQL的时候发现按照小时统计的结果还是晚了八个小时

    网上找了很多教程,有让改postgresql配置文件,timezone改为PRC。改完之后数据库显示没问题。但是通过SQL分组查询还是会有问题

    SELECT
      (to_char(take_photo_time, 'yyyy-mm-dd:HH')) AS "take_photo_time",
      COUNT(take_photo_time) AS "count"
    FROM
      "device_devicephotomodel"
    WHERE
      "device_devicephotomodel".take_photo_time BETWEEN '2020-12-23T00:00:00' :: TIMESTAMP
      AND '2020-12-24T00:00:00' :: TIMESTAMP
    GROUP BY
      (to_char(take_photo_time, 'yyyy-mm-dd:HH'))
    ORDER BY
      "take_photo_time" DESC;

    统计到的结果,依然是晚了8个小时

     通过date_trunte可以解决。但是还得调整接口,太麻烦

    SELECT
        DATE_TRUNC( 'HOUR', take_photo_time ) AS "take_photo_time",
        COUNT ( take_photo_time ) AS "count" 
    FROM
        "device_devicephotomodel" 
    WHERE
        "device_devicephotomodel".take_photo_time BETWEEN '2020-12-23T00:00:00' :: TIMESTAMP 
        AND '2020-12-24T00:00:00' :: TIMESTAMP 
    GROUP BY
        (
        DATE_TRUNC('HOUR', take_photo_time))
    ORDER BY
        "take_photo_time" DESC;

    于是找了一些比较官方的文档,说是需要·····················。。直接贴解决方式

    SELECT
      (to_char(take_photo_time, 'yyyy-mm-dd:HH24')) AS "take_photo_time",
      COUNT(take_photo_time) AS "count"
    FROM
      "device_devicephotomodel"
    WHERE
      "device_devicephotomodel".take_photo_time BETWEEN '2020-12-23T00:00:00' :: TIMESTAMP
      AND '2020-12-24T00:00:00' :: TIMESTAMP
    GROUP BY
      (to_char(take_photo_time, 'yyyy-mm-dd:HH24'))
    ORDER BY
      "take_photo_time" DESC;

    上边飘红的地方,就是重点。两个数字解决了一天·····有点无语

     最后发现。正确了。满足我的需求了。。可以回家了

  • 相关阅读:
    测试方案
    如何编写一个好的测试计划
    一个好的测试过程
    java后台生成echarts图表并保存图片
    Javascript数组排序,并获取排序后位置对应的原索引(堆排序实现)
    修改tomcat编码方式
    json序列化反序列化后function丢失
    Mysql数据库存取性能优化
    java创建文件
    Java POI导出ppt简单实现
  • 原文地址:https://www.cnblogs.com/52-qq/p/14180570.html
Copyright © 2011-2022 走看看