MySQL将开始和结束时间戳分解为X个样本

时间:2014-11-28 22:22:35

标签: mysql timestamp unix-timestamp sampling



我在一个方法之后动态创建MySQL中两个日期之间的时间值列表。 例如,用户可以输入开始和结束时间戳。

E.G开始日期= 2014/01/01 00:00:00
结束日期= 2014/01/02 00:00:00
然后,查询将运行它的魔法"并返回开始和结束日期之间所有5分钟样本的时间值列表。

1/01/2014 0:00
1/01/2014 0:05
1/01/2014 0:10
1/01/2014 0:15
1/01/2014 0:20
1/01/2014 0:25
....................... ....................... 1/01/2014 23:30
1/01/2014 23:35
1/01/2014 23:40
1/01/2014 23:45
1/01/2014 23:50
1/01/2014 23:55

有没有人对如何尝试完成此事有任何指示?

1 个答案:

答案 0 :(得分:1)

所以我对这个问题的思考将从这里开始......

 SELECT UNIX_TIMESTAMP(NOW()) ut
      , ROUND(UNIX_TIMESTAMP(NOW())/300,0) ut_rounded
      , FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(NOW())/300,0)*300) now_rounded;
 +------------+------------+---------------------+
 | ut         | ut_rounded | now_rounded         |
 +------------+------------+---------------------+
 | 1417261935 |    4724206 | 2014-11-29 11:50:00 |
 +------------+------------+---------------------+

......几秒钟(最多五分钟)......

 SELECT UNIX_TIMESTAMP(NOW()) ut
      , ROUND(UNIX_TIMESTAMP(NOW())/300,0) ut_rounded
      , FROM_UNIXTIME(ROUND(UNIX_TIMESTAMP(NOW())/300,0)*300) now_rounded;
 +------------+------------+---------------------+
 | ut         | ut_rounded | now_rounded         |
 +------------+------------+---------------------+
 | 1417261951 |    4724207 | 2014-11-29 11:55:00 |
 +------------+------------+---------------------+

所以每隔5分钟ut_rounded会增加1,所以现在我们只是在寻找序列中的空白 - 已经存在模式的问题。