根据用户提供的日期范围在MySQL数据库中搜索

时间:2010-10-12 03:37:17

标签: php mysql date range

我是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字段在MySQL中不是字段类型“date”。我应该在字段类型“date”的Event_Date字段

2 个答案:

答案 0 :(得分:3)

为了使用日期操作,event_date数据类型必须是以下之一:

  • DATETIME
  • DATE
  • 时间戳

一旦到位,您可以使用:

  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数据类型以进行比较。

答案 1 :(得分:0)

好的,所以我做了一些头撞,这就是我想出来的:

SELECT t.event_name,          SUM(t.event_charges)AS total_charges     来自你的时间    在STR_TO_DATE($ from_date,'%Y-%m-%d')之间的t.event_date1                           AND STR_TO_DATE($ to_date,'%Y-%m-%d') 或者t_vent_date2在STR_TO_DATE之间($ from_date,'%Y-%m-%d')                           AND STR_TO_DATE($ to_date,'%Y-%m-%d') GROUP BY t.event_name

这就像我的报告的魅力!非常感谢!!