2015-01-04 4 views
0

Я пытаюсь получить запрос, чтобы вытащить записи с прошлой недели с утра в четверг в 12:00 до среды ночи в 12:00.Как я могу запросить последнюю неделю С четверга по среду?

Это должно всегда работать и быть текущим. У меня есть другой запрос для текущей недели с четверга по среду, и он действительно работает. Мне просто нужен другой запрос, который показывает результаты после того, как неделя прошла с прошлой недели.

Я считаю, что этот запрос рассчитан на прошлую неделю, но не начинается в четверг и заканчивается в среду.

SELECT collector, SUM('amountcollected') as 'totalsum' FROM commissioninfo 
    WHERE thedate >= Curdate() - INTERVAL Dayofweek(Curdate())+6 day 
    AND thedate < Curdate() - INTERVAL Dayofweek(Curdate())-1 day 
    GROUP BY collector ORDER BY totalsum DESC 
+0

Вы имеете в виду ночь в среду в полночь? 12 вечера в полдень ... вы имеете в виду полдень или 11:59 вечера в среду вечером? Кроме того, в каком формате хранятся даты, хранящиеся в вашей базе данных SQL? – Mooseknuckles

+0

Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1. Если вы еще этого не сделали, укажите надлежащие DDL (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry

ответ

0

Возможно, лучший способ сделать это с использованием собственных функций даты MySQL, но я думаю, что, вероятно, просто сделаю это так. Я предполагаю, что вы имели в виду среду вечером в 11:59:59 вечера, хотя, не полдень:

$lastThursday = new DateTime("Thursday last week");

$wednesday = new DateTime("Wednesday");

$today = new DateTime("now");

$day = $today->format("l");

if ($day == "Sunday" || $day == "Monday" || $day == "Tuesday" || $day == "Wednesday") { 
    $lastThursday->modify("-1 week"); 
    $wednesday->modify("-1 week"); 
} 

$query = "SELECT collector, SUM('amountcollected') as 'totalsum' FROM commissioninfo WHERE thedate BETWEEN ".$lastThursday->format("Y-m-d")." AND ".$wednesday->format("Y-m-d ")." GROUP BY collector ORDER BY totalsum DESC";

+0

Да, это правильно, 12 часов ночи. Мой день форматируется следующим образом: 2014-12-31. Я использую именно то, что у вас здесь? Будет ли это работать так, как вы? – user2593040

+0

Нет, я отредактирую – Mooseknuckles

+0

Отредактировано, попробуйте сейчас – Mooseknuckles

Смежные вопросы