MySQL Select Function


MySQL Select Function

我的表中有三个名为data的字段。字段分别是时间戳、locationID和事件。下面的mySQL查询旨在从表中获取数据并创建四列:timestampmovementpeopleinpeopleout

当我运行查询时,我得到以下消息:MySQL返回一个空结果集(即零行)。表中肯定有数据,所以我想知道是否有人可以帮助我发现下面代码的问题。

SELECT FROM_UNIXTIME( FLOOR( UNIX_TIMESTAMP( TIMESTAMP ) / 600 ) *600 ) AS `timekey`, 
SUM( event ) AS `movement`, 
SUM( IF( event > 0, event, 0 ) ) AS `peoplein`, 
SUM( IF( event < 0, ABS( event ) , 0 ) ) AS `peopleout`
FROM `data`
WHERE DATE( TIMESTAMP ) = DATE( NOW( ) ) 
GROUP BY `timekey`
ORDER BY `timekey` ASC
WHERE DATE( TIMESTAMP ) = DATE( NOW( ) )

表中可能有数据,但是,除非今天表中有的数据,否则您将看不到任何内容。

就调试SQL而言,通常剥离一些东西直到它开始交付一些结果(或者从最小值开始并添加一些东西直到它没有)通常是一个好主意。最后删除/添加的东西可能是罪魁祸首,你可以将注意力集中在这一点上。

表达式:

WHERE TIMESTAMP = DATE( NOW( ) ) 

会失败,因为Timestamp有一个时间分量。虽然使用date可以修复它,但建议这样做:

where timestamp >= curdate() and
      timestamp < date_add(curdate(), interval 1 day)

这个版本允许您的查询利用timestamp上的索引。