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年以来的秒数。用这个函数才能正确的计算两个时间点的秒数差。

Logo

更多推荐