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

Php 根据用户提供的日期范围在MySQL数据库中搜索,php,mysql,date,range,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 -

我是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: ______________
用户输入这两个字段,我应该列出该日期范围内的事件,并合计费用


请注意,事件\日期字段在MySQL中不是字段类型“日期”。。如果我有字段类型为“Date”的Event_Date字段

以便使用日期操作,则
Event_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数据类型以进行比较。

为了使用日期操作,
event_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数据类型以进行比较。

好的,所以我做了一些尝试,这就是我想到的:

选择t.event\u name, 总费用(t.事件费用)作为总费用 从你的桌子上 其中t.event_date1在STR_到_DATE之间($from_DATE,%Y-%m-%d')) 和STR_TO_DATE($TO_DATE,%Y-%m-%d')) 或t.event_date2在STR_到_DATE之间($from_DATE,%Y-%m-%d')) 和STR_TO_DATE($TO_DATE,%Y-%m-%d')) 按t.event\u名称分组


这对我的报告很有吸引力!非常感谢

好的,我做了一些头部撞击,这就是我想到的:

选择t.event\u name, 总费用(t.事件费用)作为总费用 从你的桌子上 其中t.event_date1在STR_到_DATE之间($from_DATE,%Y-%m-%d')) 和STR_TO_DATE($TO_DATE,%Y-%m-%d')) 或t.event_date2在STR_到_DATE之间($from_DATE,%Y-%m-%d')) 和STR_TO_DATE($TO_DATE,%Y-%m-%d')) 按t.event\u名称分组


这对我的报告很有吸引力!非常感谢

到目前为止,是的,这是一个字符串。。我想,如果我像其他人建议的那样将其转换为DATETIME、DATE或TIMESTAMP,操作会更简单……到目前为止,是的,它是一个字符串。。我想如果我像其他人建议的那样将其转换为DATETIME、DATE或TIMESTAMP,操作会更容易…谢谢!这很有魅力,但我还有一个问题。。使用STR_to_DATE函数很重要吗?我已经用JavaScript在前端表单中处理了格式。。非常感谢@Jasdeep Singh:STR_TO_DATE确保将该值转换为MySQL日期时间值(假设该值与指定的格式匹配)。日期格式不一致,所以我建议使用它。但为什么我使用STR_TO_Date时会得到空白输出???当我不使用它时,一切都很好?为了进一步推进这个查询,如果我包含两个冒号的搜索,我将如何进行??例如,两个事件日期栏,分别为事件日期1和事件日期2???@Jasdeep Singh:请用新问题提问,谢谢!这很有魅力,但我还有一个问题。。使用STR_to_DATE函数很重要吗?我已经用JavaScript在前端表单中处理了格式。。非常感谢@Jasdeep Singh:STR_TO_DATE确保将该值转换为MySQL日期时间值(假设该值与指定的格式匹配)。日期格式不一致,所以我建议使用它。但为什么我使用STR_TO_Date时会得到空白输出???当我不使用它时,一切都很好?为了进一步推进这个查询,如果我包含两个冒号的搜索,我将如何进行??例如,两个事件日期列,分别为事件日期1和事件日期2???@Jasdeep Singh:请用新问题问这个问题