• MySql 求一段时间范围内的每一天,每一小时,每一分钟


    平常经常会求一段时间内的每一天统计数据,或者每一时点的统计数据。但是mysql本身是没有直接获取时点列表的函数或表。下面是自己用到的一些方法,利用临时变量和一个已存在的比较多数据(这个需要根据实际情况决定)的表做关联得到时点列表。希望对大家有所帮助。

    sql中用到的一些关键数据

    #t_table表是系统上已存在的一个有比较多数据的表

    一个月的每一天

    #2017年7月份的每一天
    SET @beginDate='2017-07-01';
    SET @maxDate ='2017-07-31';
    SELECT DATE(@tempDay),@tempDay:=DATE_ADD(@tempDay,INTERVAL 1 DAY)
    FROM t_table f #该表是系统上已存在的一个有比较多数据的表
    LEFT JOIN (SELECT @tempDay:=@beginDate) b  ON 1=1
    WHERE @tempDay<=@maxDate

    昨天的每一小时

    #昨天的每一小时
    SET @beginDate=DATE(DATE_ADD(NOW(),INTERVAL -1 DAY));
    SET @maxDate =DATE(NOW());
    SELECT DATE_FORMAT(@tempHour ,'%H'),@tempHour :=DATE_ADD(@tempHour,INTERVAL 1 HOUR)
    FROM t_table f
    LEFT JOIN (SELECT @tempHour :=@beginDate) b  ON 1=1
    WHERE @tempHour <@maxDate

    一小时内的每一分钟

    #一小时内的每一分钟
    SET @beginDate='2017-08-01 17:00:00';
    SET @maxDate ='2017-08-01 18:00:00';
    SELECT DATE_FORMAT(@tempMinute ,'%i'),@tempMinute :=DATE_ADD(@tempMinute,INTERVAL 1 MINUTE)
    FROM t_table t
    LEFT JOIN (SELECT @tempMinute :=@beginDate) b  ON 1=1
    WHERE @tempMinute <@maxDate

     转发请标明出处

  • 相关阅读:
    生成类似于MongoDB产生的ObjectId
    链式编程:遇到多个构造器参数(Constructor Parameters)时要考虑用构建器(Builder)
    mysql时间字符串按年/月/天/时分组查询 -- date_format
    根据模板导出excel
    九度 1188 约瑟夫环问题
    快速排序
    Linux 命令
    volatile小记
    线程池ThreadPoolExecutor
    CyclicBarrier、CountDownLatch与Semaphore的小记
  • 原文地址:https://www.cnblogs.com/Jimmy-pan/p/MysqlTimeList.html
Copyright © 2020-2023  润新知