time_to_sec()函数仅仅计算了时间部分的秒数,没有把年月日的秒数计算进去。因为这个特点,导致了我程序的一个bug。
这段代码本来想统计客服的响应时间。但是碰到这种极品数据的时候,例如, responseTime:2013-1-8 00:00:01 ,firstMsgTime: 2013-1-7 23:59:50,程序就返回负数了。
SELECT service as pin, AVG(time_to_sec(responseTime) - time_to_sec(firstMsgTime)) as num FROM( SELECT service, responseTime, firstMsgTime FROM analysis_session WHERE responseTime is not NULL AND created >= DATE_ADD(DATE_FORMAT(now(),'%Y-%m-%d'),INTERVAL -1 DAY) AND created < DATE_FORMAT(now() ,'%Y-%m-%d') GROUP BY cid ) t GROUP BY service
后来我换了一种mysql时间函数——UNIX_TIMESTAMP(),这个函数返回的是自1970年以来的秒数。用这个函数才能正确的计算两个时间点的秒数差。