2016-06-13 3 views
1

Я ищу некоторые идеи о том, как выполнить разницу дат в часах при группировке по дате в mySQL. Например, метод нормальной DateDiff (часы) на приведенных ниже дат приведет в 49 часов, но я заинтересован в какие дни у которых доля от общего числа 49 часов:mySQL DateDiff Hour by Date

Date 1: 2016-06-12 12:00 
Date 2: 2016-06-14 13:00 

Результат:

Start                                                   Конец                                                 Diff
2016-06-12 12:00           2016-06-13 00:00     12 часов
2016-06-13 00:00           2016-06-14 00:00     24 часов
2016-06-14 00 : 00           2016-06-14 13:00     13 Часов

Спасибо!

+0

У вас есть календарная таблица с одной строкой на сегодняшний день? –

+0

Я этого не делаю. Но это легкая штука для включения в решение, если это необходимо. –

ответ

0

Предполагая, что у вас есть таблицы календаря и даты начала и окончания в переменных, то логика, как это должна делать то, что вы хотите:

select c.date, c.date + interval 1 day, 
     timstampdiff(hour, 
        greatest(c.date, $start), 
        least(c.date + interval 1 day, $end) 
        ) 
from calendar c 
where c.date >= date($start) and c.date < date($end) + interval 1 day 
+0

Спасибо. Я попробую сейчас и дам вам знать. –

+0

Есть пара недостатков, с которыми я пытаюсь работать. I.e., таблица дат (где каждая дата начинается в полночь) не будет работать с этим ... потому что первая дата начинается с 12:00 PM. –

+0

@JasonWasho. , , Я думаю, что извлечение части даты должно исправить эту проблему. –