mysql检索当前和最后一小时之间的差异

时间:2013-10-25 14:46:42

标签: mysql time hour

对于下表,我想获得每个站点的col-D和col-E的最后一小时和当前小时之间的差异。 作为其中的一部分,我试图首先获取每个站点的最新(当前)小时条目,但以下查询仅列出了endTime为01:00:00的条目,当我有条目达到9.00AM < / p>

select distinct(mmeName), endDate, endTime, c_ratio, set_time from attach where
 type='INIT' and Date(endDate)=curDate() and 
Time(endTime) >= DATE_ADD(Time(endTime), INTERVAL -1 HOUR) group by mmeName;

任何帮助都会对即时问题表示赞赏,并且能够找到当前和最后一小时之间的差异。

enter image description here

1 个答案:

答案 0 :(得分:1)

<强> EDITED

我认为这就是你要找的东西。这将为您提供任何记录,其中endTime是每个mmeName的最新当前时间之前一小时。 'max'子选择获取每个mmeName的最新结束日期时间,并且加入返回恰好在此之前一小时与记录匹配。

SELECT  mmeName, endDate, endTime, c_ratio, set_time 

FROM    attach a

        JOIN 
        (SELECT  mmeName, CONCAT(endDate, ' ' , endTime) max_endDateTime
         FROM    attach 
         WHERE   type = 'INIT' 
         ORDER BY endDate DESC, endTime DESC
        ) AS max ON max.mmeName = a.mmeName
                AND max.max_endDateTime = DATE_ADD(CONCAT(endDate, ' ' , endTime), INTERVAL 1 HOUR)

WHERE   type = 'INIT'
;

ORIGINAL

select  mmeName, endDate, endTime, c_ratio, set_time 

from    attach 

where   type='INIT' and Date(endDate)=curDate() and 
        endTime >= DATE_SUB(now(), INTERVAL -1 HOUR) 

group by mmeName;

注意:如果给定的mmeName有多个匹配记录,则此查询将只抓取其中一个。

已编辑:您需要从WHERE子句中删除TIME()函数。两者都有日期和时间,如果你没有,如果你在凌晨12:00到凌晨1点之间运行,它将不会返回任何结果。