WaRstim
@WaRstim

Как удалить определенные записи из MySQL по дате и времени?

Добрый День ! )

Есть БД СКУД куда прилетают отчеты по проходам, проблема в том что необходимо удалять записи из БД одинаковые по времени +-20сек относящиеся к одному и тому же сотруднику, при этом их может быть множества.

Например:
если отметка до 13 часов
  1. 2016-08-06 08:59:55
  2. 2016-08-06 09:00:05
  3. 2016-08-06 09:00:06

И из этих записей нужно удалить все кроме Первой.
если отметка после 13 ч
  1. 2016-08-06 17:59:55
  2. 2016-08-06 17:00:05
  3. 2016-08-06 17:00:06

И из этих записей нужно удалить все кроме Последней.

Это SQL запрос отображающий повторные записи одного сотрудника в +-20сек с изображением результата
SELECT lg.lastname,lg.firstname, lg.time 
FROM acc_monitor_log as lg
WHERE lg.lastname in (SELECT lastname FROM acc_monitor_log 
WHERE(time < lg.time and time > DATE_ADD(lg.time,INTERVAL -20 SECOND)) 
OR (time > lg.time AND time < DATE_ADD(lg.time,INTERVAL 20 SECOND)) 
AND lastname = lg.lastname) AND LENGTH(lg.lastname) > 1 
ORDER BY time DESC

268b2b22166c4d3a967abeb73037b2a1.pngЗаранее Благодарен, за уделенное внимание !
  • Вопрос задан
  • 1174 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Mr_Romanov
FullStack WebDev
$DATE = date("H:m:s", strtotime($row['date']));

Как видите вы можете конвертировать дату до секунд.
Дальше дело двух минут, в цикле проверяем все записи совпадающие по часам, потом по минутам, потом по секундам.

И оставляем только первую. Всё

php.net/manual/ru/function.date.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы