MySQL ВЫБРАТЬ Минуты между двумя датами (РАЗНЫЕ ДНИ) - PullRequest
0 голосов
/ 26 апреля 2020

Я сегодня очень расстроен этим MySQL заявлением, ага.

Так что мне нужно найти количество минут между моментом, когда добровольцы включились, и временем, когда они завершились.

В таблице волонтеров_временной синхронизации, если я установлю дату и время Clock_In на тот же день, что и Clock_Out, я смогу заставить работать любую функцию времени (TIMEDIFF, et c.), Однако ... Если часы выходной день - следующий день (например, если я работал в 2020-04-26 в 12:00:00 и выключился в 2020-04-27 в 12:00:00), следующий код должен вернуть 1440, так как он будет 60 * 24, но не возвращает никаких записей.

Вот заявление, которое я использую:

SELECT 
          A1.volunteer_id, 
          A1.datetime AS check_in_at, 
          A2.datetime AS check_out_at,
          ROUND(time_to_sec((TIMEDIFF(A2.datetime, A1.datetime))) / 60) AS total_time
          FROM 
          volunteer_timeclock AS A1 
          INNER JOIN volunteer_timeclock AS A2 
          ON A1.volunteer_id = A2.volunteer_id 
          AND DATE(A1.datetime) = DATE(A2.datetime) 
          WHERE A1.status = 'clock_in' 
          AND A2.status = 'clock_out' 
          AND DATE(A1.datetime) BETWEEN '2020-01-1' 
          AND '2020-12-31'
          AND DATE(A2.datetime) BETWEEN '2020-01-1' 
          AND '2020-12-31'
          AND A1.volunteer_id = '25'
          ORDER BY A1.datetime DESC

Спасибо !!

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

TIME значения изначально ограничены в своем диапазоне. Преобразовать datetimes в секунды напрямую. Это также упрощает логику c:

(TO_SECONDS(A2.datetime) - TO_SECONDS(A1.datetime)) / 60)
0 голосов
/ 26 апреля 2020

правый. Я чувствую себя идиотом, у меня было заявление AND, в котором говорилось, что ДАТА должна быть такой же. Спасибо за ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...