我的表中有三个名为data
的字段。字段分别是时间戳、locationID和事件。下面的mySQL查询旨在从表中获取数据并创建四列:timestamp
、movement
、peoplein
和peopleout
。
当我运行查询时,我得到以下消息: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
上的索引。