0

您好,我有一个 SQL 问题,我得到了结果,但我想要的也是开始 15 分钟。

这是我当前的查询:

SELECT CONCAT(CAST(DATE_FORMAT(date_added, '%h') AS CHAR(2)), ':',  
CAST(DATE_FORMAT(date_added, '%m') AS CHAR(2))) timer, 
COUNT(*) ctrRes from tbl1 WHERE id = 1 AND cat = 2
GROUP BY ( 3 * HOUR( date_added ) + FLOOR( MINUTE( date_added ) / 15 ))

样本结果:

计时器 | ctrRes

01:28 | 1

01:44 | 22

02:14 | 253

02:29 | 238

无论结果是否为空,有没有办法从 00:15 开始获取记录。谢谢。

4

1 回答 1

0

无论是否在该时间段内,您似乎都希望返回记录。那么,MySQL 必须返回一些东西。SQL是用来检索数据的,不是用来生成数据的,所以如果数据不存在,你是拿不到的。因此,您需要某种方法来创建数据,以便您可以检索它。

您可以在每次查询时临时创建此数据,也可以在实际表中具体化数据。如果您经常运行此查询,我建议您具体化数据。在以下位置有一个创建日期的示例:https ://gist.github.com/johngrimes/408559您可以对其进行自定义以生成时间而不是日期。

然后结果变成这样:

select * from TimeTable left join tbl1 on ... where <some range criteria>
于 2013-07-23T18:17:13.820 回答