Сложение значений datetime

259
03 мая 2018, 09:43

Нужно вывести список сотрудников, которые отработали суммарно менее 8 часов в офисе от первого входа до последнего выхода. Я правильно понимаю что это возможно только через цикл?

  1. 3 1 2018-04-28 09:00:00 2018-04-28 13:00:00
  2. 4 1 2018-04-28 14:00:00 2018-04-28 18:00:00
  3. 5 2 2018-04-28 10:03:00 2018-04-28 13:00:00
  4. 6 2 2018-04-28 15:00:00 2018-04-28 18:00:00
  5. 7 3 2018-04-29 09:00:00 2018-04-29 18:00:00
  6. 8 1 2018-04-27 09:00:00 2018-04-27 18:00:00
  7. 9 3 2018-04-27 09:00:00 2018-04-27 13:00:00
  8. 10 3 2018-04-27 14:00:00 2018-04-27 18:00:00

Answer 1

Чтобы найти даты и id сотрудников, которые отработали от первого входа до последнего выхода меньше 8 часов в этот день, удобно group by и having использовать:

select DATE(entrance), id_employee
from t1
group by DATE(entrance), id_employee
having timestampdiff(second, min(entrance), max(exit1)) < 28800
order by DATE(entrance), id_employee

Результат:

DATE(entrance) id_employee
2018-04-28  2
Answer 2

modify вычитает одну дату из другой.

$now = DateTime("now");
$now->modify("-8 hour");

Общий синтаксис:

SELECT column-names
FROM table-name
WHERE column-name BETWEEN value1 AND value2
READ ALSO
SQL - дубликаты записи

SQL - дубликаты записи

при парсинге магазинов у товаров возникает одна проблема:

264
MySQL Workbench has encountered a problem

MySQL Workbench has encountered a problem

Не получается создать соединение в Workbench, показывает следующее:

615
Забыл при создании сделать поле с ID AI

Забыл при создании сделать поле с ID AI

При создании таблицы забыл сделать поле AIКак сейчас, не дропая, сделать определённое поле AI?

246
UPDATE триггером той же таблицы

UPDATE триггером той же таблицы

Мне нужно в триггере обнулить все поля dflt таблицы кроме того, которому ставится dflt=1

247