选择中间有数据的日期

时间:2014-04-08 09:22:33

标签: mysql

我今天有一个每分钟填充到数据库的RainSoFar列,我想知道这个月的最大降雨持续时间,即下雨时间和持续多长时间。

例如,2014-04-01在08:00开始下雨,直到2014-04-05 10:00才暂停下雨

我在组合查询时遇到问题。

// this will select rows when there was any rain this month
SELECT LogDateTime, TodayRainSoFar 
FROM sibeniku_monthly 
WHERE TodayRainSoFar > 0.0
AND DATE_FORMAT(LogDateTime, "%m.") = 04

现在我正在寻找能计算中间行最长持续时间的东西(LogDateTime是日期时间和范围是1分钟),像是

AND MAX (COUNT BETWEEN rows) 

2 个答案:

答案 0 :(得分:1)

下面使用的方法是保持连续几分钟的降雨计数器,然后得到具有最大值的计数器的行(这将给你连续下雨的最大持续时间)。如果下雨,计数器将重置为0。

SELECT DATE_SUB(LogDateTime, INTERVAL counter MINUTE) AS StartTime, LogDateTime AS EndTime FROM (
  SELECT IF(TodayRainSoFar = 0, @i:=0, @i:=@i+1) AS `counter`, 
    LogDateTime, TodayRainSoFar
  FROM
    sibeniku_monthly, (SELECT @i:= 0) i
  ORDER BY LogDateTime
) t
ORDER BY `counter` DESC
LIMIT 0,1

工作演示http://sqlfiddle.com/#!2/8578b8/8

答案 1 :(得分:-1)

尝试在脚本中使用DATEDIFF,这是一个链接:http://technet.microsoft.com/en-us/library/ms189794.aspx

这将为您提供有关DATEDIFF的所有信息。