В этом случае у меня есть таблица «покидать»:
+--------+---------+---------+-------------+---------+-----------+
|ID_LEAVE|ID_WORKER| BEGIN_DATE | END_DATE |
+--------+---------+---------+---------+------------+------------+
| 4 | 26 |2019-03-19 07:00:00 |2019-03-22 15:00:00 |
+--------+---------+---------+----------------------+------------+
В хочу написать запрос MySQL, который выбирает все в диапазоне между датой начала и даты окончания, а затем подводит итоги. Когда я пишу так:
SELECT *,
time_format(SUM((datediff(END_DATE, BEGIN_DATE) + 1) * (time(END_DATE) - time(BEGIN_DATE))), '%H:%i:%s') AS 'LEAVE TIME'
FROM leave
WHERE (DATE(BEGIN_DATE) >= '2019-03-19' AND DATE(END_DATE) <='2019-03-22')
GROUP BY ID_LEAVE;
Тогда показывает вот так:
+--------+---------+---------+-------------+---------+------------------------+
|ID_LEAVE|ID_WORKER| BEGIN_DATE | END_DATE | LEAVE_TIME |
+--------+---------+---------+---------+------------+--------------------+-----
| 4 | 26 |2019-03-19 07:00:00 |2019-03-22 15:00:00 | 32:00:00 |
+--------+---------+---------+----------------------+------------+-------------
Но когда я так делаю:
SELECT *,
time_format(SUM((datediff(END_DATE, BEGIN_DATE) + 1) * (time(END_DATE) - time(BEGIN_DATE))), '%H:%i:%s') AS 'LEAVE TIME'
FROM leave
WHERE (DATE(BEGIN_DATE) >= '2019-03-19' AND DATE(END_DATE) <='2019-03-21')
GROUP BY ID_LEAVE;
ничего не показывает.
У меня есть вопрос: можно ли показать все в диапазоне (Begin_date и End_date)? Если да, то может кто-нибудь объяснить, пожалуйста, как это написать? Спасибо за любой ответ.