Поиск в базе данных MySQL на основе диапазона дат, предоставленного пользователем - PullRequest
0 голосов
/ 12 октября 2010

Я новичок в кодировании PHP и MySQL и до сих пор работаю над этим .. Итак, небольшая помощь по этому вопросу будет высоко оценена:

У меня есть таблица, в которой ведется запись определенных событий.Вот как выглядит моя таблица:

Id - Event_Name - Event_Date - Event_Charges
---------------------------------------------
1 - Event 1    - 10/10/2010 - $100
2 - Event 2    - 10/31/2010 - $200
3 - Event 3    - 11/12/2010 - $150
4 - Event 4    - 12/01/2010 - $175

Цель состоит в том, чтобы перечислить названия событий и суммировать расходы за определенный диапазон дат ...

Моя форма интерфейсавыглядит следующим образом:

From Date: ____________
To Date: ______________

Пользователь вводит эти два поля, и я должен перечислить события, попадающие в этот диапазон дат, и суммировать расходы.

Обратите внимание, что поле Event_Date не относится к типу поля "date" в MySQL. Должен ли я иметь поле Event_Date типа поля "date" .

Ответы [ 2 ]

3 голосов
/ 12 октября 2010

Чтобы использовать операции с датой, тип данных event_date должен быть одним из:

  • DATETIME
  • ДАТА
  • TIMESTAMP

Как только это будет на месте, вы можете использовать:

  SELECT t.event_name,
         SUM(t.event_charges) AS total_charges
    FROM YOUR_TABLE t
   WHERE t.event_date BETWEEN STR_TO_DATE($from_date, '%Y-%m-%d')
                          AND STR_TO_DATE($to_date, '%Y-%m-%d')
GROUP BY t.event_name

... что поднимает вопрос о том, что вам нужно применять формат даты. Вот почему я привел пример использования STR_TO_DATE, поэтому строка из формы HTML для сравнения преобразуется в тип данных MySQL DATETIME.

0 голосов
/ 13 октября 2010

Хорошо, я сделал несколько ударов головой, и вот что я придумал:

ВЫБРАТЬ t.event_name, SUM (t.event_charges) AS total_charges ОТ YOUR_TABLE t WHERE t.event_date1 BETWEEN STR_TO_DATE ($from_date, «% Y-% m-% d») И STR_TO_DATE ($ to_date, «% Y-% m-% d») ИЛИ t.event_date2 BETWEEN STR_TO_DATE ($ from_date, «% Y-% m-% d») И STR_TO_DATE ($ to_date, '% Y-% m-% d') GROUP BY t.event_name

Это работает как очарование для моего отчета!Большое спасибо !!

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