【问题标题】:Search in MySQL Database based on Date Range provided by the user根据用户提供的日期范围在 MySQL 数据库中搜索
【发布时间】:2010-10-12 03:37:16
【问题描述】:

我是 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 中不是字段类型“日期”。我应该有字段类型“日期”的 Event_Date 字段

【问题讨论】:

  • 到目前为止,是的,它是一个字符串。我想如果我按照其他人的建议将其转换为 DATETIME 、 DATE 或 TIMESTAMP ,操作会更容易......

标签: php mysql date range


【解决方案1】:

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

【讨论】:

  • 谢谢!这就像一个魅力,但是,我还有一个问题.. 使用 STR_TO_DATE 函数是否重要,我已经通过 JavaScript 在前端表单中处理了格式.. 非常感谢!
  • @Jasdeep Singh:STR_TO_DATE 确保该值将转换为 MySQL DATETIME 值(假设该值与指定的格式匹配)。日期格式不一致,所以我建议使用它。
  • 但是当我使用 STR_TO_DATE 时怎么会得到空白输出???当我不使用它时一切都很好?
  • 为了进一步推进这个查询,如果我要包含来自两列的搜索,我会怎么做?例如,两个 Event_date 列作为 Event_date1 和 Event_date2 ??
  • @Jasdeep Singh:请在新问题中提问
【解决方案2】:

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

选择 t.event_name, SUM(t.event_charges) A​​S total_charges 从 YOUR_TABLE t WHERE t.event_date1 BETWEEN STR_TO_DATE($from_date, '%Y-%m-%d') AND STR_TO_DATE($to_date, '%Y-%m-%d') 或 t.event_date2 BETWEEN STR_TO_DATE($from_date, '%Y-%m-%d') AND STR_TO_DATE($to_date, '%Y-%m-%d') 按 t.event_name 分组

这对我的报告来说就像一个魅力!非常感谢!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-28
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多