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

标签 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

我需要找到一种方法将时间戳转换为日期并获取与该 MAX Day 匹配的所有记录。

期望的结果是:

count
-------
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)

关于php - 将MySQL时间戳转换为DAY,然后按MAX排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48214035/

相关文章:

php - mysql_real_escape_string(htmlspecialchars()) 真的有用吗?为什么?

php - 如何比较string或int类型?

mysql - 使用正则表达式重命名多个 MySQL 列可能吗?

php - OOP For循环SQL更新查询数量

MySQL 查询运行缓慢

php - 是否可以仅使用一个 sql 来执行此操作?

php - Laravel 从关系中获取第一项的模型

php - 单击动态创建的复选框时通过 AJAX/PHP 更新 MySQL 中的值?

Mysql创建 View 并逐渐增加日期时间字段

sql - 统计表中特定列的重复记录