MySQL:GROUP BY特定时间段(重叠天数)

时间:2015-07-21 12:54:37

标签: mysql time group-by

我有一张桌子,在5分钟内存储多年的weatherdata。现在我需要一个温度最低的结果,每个时间段从晚上8点到次日早上8点。

或换句话说:每晚(20:00 - 08:00)的最低温度。

表:

datetime            temp
2015-04-01 00:00    21.2
2015-04-01 00:05    21.1
2015-04-01 00:10    20.8
...
2015-04-02 00:00    22.6
2015-04-02 00:05    22.2

我的基本方法是:

SELECT MIN(temp) 
FROM weathertable 
WHERE datetime BETWEEN '2015-04-01 18:00' AND '2015-04-02 08:00'

但我需要一个没有固定日期的每个时期的结果。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

SELECT 
   MIN(temp)
FROM 
   weathertable
WHERE 
    TIME(FROM_UNIXTIME(UNIX_TIMESTAMP(datetime)-(10*60*60))) BETWEEN '08:00:00' AND '22:00:00'
GROUP BY 
    DATE(FROM_UNIXTIME(UNIX_TIMESTAMP(datetime)-(10*60*60)));

答案 1 :(得分:0)

试试这个:

获取上一个日期:选择子数据(curdate(),1);

SELCT min(temp) 
FROM *tablename*
where 
date between 
concat(subdate(curdate(),1),' ','20:00:00') and concat(curdate(),' ','08:00:00');