添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱玩的电影票  ·  flink JDBC SQL ...·  1 周前    · 
大方的烤面包  ·  Mysql ...·  1 周前    · 
狂野的啤酒  ·  11.5 JSON数据类型_MySQL ...·  1 周前    · 
正直的番茄  ·  了解关系数据库的视图·  6 小时前    · 
一身肌肉的剪刀  ·  有道云脑图 ...·  10 月前    · 
低调的绿茶  ·  南通市通州区人民政府·  1 年前    · 

数据存储在mysql数据库中。在一个离散的一段时间内(开始时间到结束时间),求出每隔一个小时,用户消费的金币。

这时,就需要将这一段时间以小时来分割了,然后groupby。

该怎么做呢。

时间通常是 datetime timestamp 。通过 DATE_FORMAT ,我们可以对时间进行分段。

%H 0-23小时
%S 00-59秒

所以可以这样:

select sum(coin), DATE_FORMAT(log_time, "%H") as h from gift_tb where log_time >= '2017-11-10 00:00:01' group by h

看起来是可以了。可是如果时间总长度大于1天呢。或是我需要30分钟来分割,10分钟来分割。这样显然是不行的。

好吧,路总是要人走的。

计算的根本还是时间,那不如将时间稍微处理下。

公式: floor( (记录时间 - 时间段的开始时间)/ (60 * 60) ) as h

于是就有了:

select sum(coin), floor((UNIX_TIMESTAMP(log_time) - 1510243200)/(60 * 60)) as h from gift_tb where log_time >= '2017-11-10 00:00:01' group by h

http://www.w3school.com.cn/sql/func_date_format.asp

http://blog.csdn.net/zhuyu_deng/article/details/43409547