将MySQL时间戳转换为DAY,然后按MAX排序

时间:2018-01-11 18:53:05

标签: php mysql sql database join

尝试编写mySQL查询,选择用户打开灯光的最近(**)次数。

**最近一直是数据库中最近一天开灯的所有时间。

样本表: 数据库名称:LLL 表名称:灯

UserID    | LightOn               | LightOff
-----------------------------------------------------
3         | 2018-01-08 09:00:00   | 2018-01-08 09:03:00
3         | 2018-01-08 10:15:00   | 2018-01-08 10:17:00
3         | 2018-01-07 15:00:00   | 2018-01-07 15:05:00

所以,从这张表中我们可以看出

UserID 3 (Bob) turns the light on:
2 times on January 8th (at 9AM for 3 minutes and 10:15AM for 2 minutes) &
1 times on January 7th (at 3PM for 5 mins)

我希望我的查询返回2,因为1月8日最近一天有2条记录。

我只能获得记录数量:

SELECT COUNT(C.LightOff) AS count FROM LLL.Lights AS C 
WHERE C.UserID = 3
ORDER BY C.LightsOff DESC

我得到以下回复:

count
-------
3

我需要找出一种方法,将时间戳转换为DAY,并获得与该MAX日相匹配的所有记录。

期望的结果是:

count
-------
2

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

假设您的光照列中有正确的日期时间值
你可以获得最近的一天并加入你的计数

  select count(*) from LLL.Lights 
  inner join  (
      select  max(date(LightOff)) max_date
      FROM LLL.Lights 
      WHERE UserID = 3
      ) t on t.max_date = date(LightOff)