Mysql日期时间查询

6
我是这个论坛的新手。我在构建MySQL查询时遇到了困难。基本上,我想选择数据并使用某种函数以特定方式输出时间戳字段。我知道dateformat可以按分钟、日、小时等方式进行操作。但考虑以下情况:假设现在是下午12:59。我想能够选择过去一天的数据,并根据其时间戳将数据放入两个小时宽的时间“桶”中。所以这些“桶”将是:上午10:00、上午8:00、上午6:00、上午4:00等,查询将把数据的时间戳转换为其中一个“桶”中的时间。
例如:
时间 转换后
上午4:45 变成上午4:00
上午6:30 变成上午6:00
上午9:55 变成上午8:00
上午10:03 变成上午10:00
上午11:00 变成上午10:00
明白吗?这些“桶”的宽度也需要动态调整。希望我清楚地描述了问题,并且非常感谢任何帮助。

可以使用 INTERVAL 或者 FLOOR 来进行分组。使用 GROUP BY FLOOR(hour/binsize)*binsize 可以让你开始工作。 - Konerak
太酷了,谢谢。我还想按月份进行操作,不一定需要静态的 bin 大小。 - Tucker
2个回答

1

示例:

按月分组:

GROUP BY YEAR(datestampfield) desc, MONTH(datestampfield) desc

按小时分组,可配置小时数:

set @rangehrs = 2; select *,FLOOR(HOUR(dateadded)/@rangehrs )*@rangehrs as x from mytable GROUP BY FLOOR(HOUR(dateadded)/@rangehrs )*@rangehrs limit 5;


0
听起来你想要一个时间的直方图。不确定这是否是真实存在的,但直方图这个术语可能会帮助你找到正确的方向...就像这个相关问题:

获取直方图绘图数据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接