我今天有一个每分钟填充到数据库的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)
答案 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
答案 1 :(得分:-1)
尝试在脚本中使用DATEDIFF,这是一个链接:http://technet.microsoft.com/en-us/library/ms189794.aspx
这将为您提供有关DATEDIFF的所有信息。