Конвертируйте метку времени MySQL в ДЕНЬ, затем сортируйте по MAX

0

Попытка написать запрос 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, потому что в последний день 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

Есть идеи?

  • 0
    почему * самый последний день 8 января *, а не 7?
  • 0
    Потому что 8 января самый последний день в таблице
Теги:
database
join

1 ответ

2
Лучший ответ

Предполагая, что у вас есть правильное значение datetime в столбце lightoff
вы можете получить последний день и присоединиться к своему счету

  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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню