MySQL按日期时间字段采样数据

标签 mysql datetime time sample

我有一个结构如下的 MySQL 表:

ID     | data           | Timestamp          | secondary_key |         
--------------------------------------------------------------
|1     | blahblah       |2018-09-03 10:45:27 | value1        |
--------------------------------------------------------------
|2     | someotherblah  |2018-09-08 10:46:56 | value2        |
--------------------------------------------------------------
|3     | blahblahagain  |2018-09-03 10:17:02 | value1        |
--------------------------------------------------------------
|4     | someotherblah  |2018-09-03 10:52:02 | value1        |
--------------------------------------------------------------

我需要通过在过去每 30 分钟在时间戳字段上对它们进行采样来选择具有给定值的 secondary_key 的记录(即从上面的数据:如果现在是 10:53 并且辅助键 = value1,我想要我的查询只返回 ID = 4 和 3 的记录)。 我怎样才能做到这一点?

我希望我的问题能被理解,抱歉我的英语不好。

编辑:这是在 2018-09-03 10:53 执行查询时的预期输出

|ID    | data           | Timestamp          | secondary_key |         
--------------------------------------------------------------
|4     | someotherblah  |2018-09-03 10:52:02 | value1        |
--------------------------------------------------------------
|3     | blahblahagain  |2018-09-03 10:17:02 | value1        |
--------------------------------------------------------------

最佳答案

您可以在 30 分钟内对子选择组使用联接

select * from my_table 
inner join ( 
  SELECT  min(Timestamp) min_time, secondary_key
  from my_table 
  where secondary_key = 'value1'
  GROUP BY ROUND(UNIX_TIMESTAMP(timestamp)/(30* 60)), secondary_key
  ) t on  my_table.Timestamp = t.min_time and t.secondary_key = my_table.secondary_key;

关于MySQL按日期时间字段采样数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753704/

相关文章:

PHP foreach 行作为 $var,行名和行号重复

c - 试图找到一个完全随机数生成器

javascript - 如何以 24 小时格式比较 2 个时间,以检查 1 个时间是否早于另一个时间

php - 多个左连接不适用于子查询

mysql - mysql中的日期时间字段溢出错误

MySQL 通过聚合优化子查询和排序

python - 动态日期范围数据切片

Python 将不寻常的日期字符串转换为日期时间格式

当列类型为 DATE 时,MYSQL 在 SELECT 查询中返回完整的日期时间字符串

java - Android 上的时间解析问题