【问题标题】:How to get a first and last date in a mysql database table如何在mysql数据库表中获取第一个和最后一个日期
【发布时间】:2012-01-11 06:23:02
【问题描述】:

为了创建过滤器下拉列表,我需要找出 mysql 表中的第一个和最后一个日期。我指的是一个包含日期的字段。

我的第一个想法是运行查询以提取所有记录,然后在 php 中执行一些逻辑来查找第一个和最后一个日期。

任何更好的建议.. 一旦有一个庞大的数据集,我的解决方案似乎效率很低。

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    最小日期:

    select date_field from table order by date_field asc limit 1;
    

    最大日期:

    select date_field from table order by date_field desc limit 1;
    

    两者:

    select min(date_field),max(date_field) from table;
    

    【讨论】:

    • 这些选项中哪个更有效
    【解决方案2】:

    永远不要提取所有记录!为此使用 SQL:

    SELECT your_time_column FROM your_table ORDER BY your_time_column ASC LIMIT 1

    SELECT your_time_column FROM your_table ORDER BY your_time_column DESC LIMIT 1

    SELECT MAX(your_time_column), MIN(your_time_column) FROM your_table

    【讨论】:

    • 这些选项中哪个更有效
    • 具有聚合函数 (MIN(), MAX()) 的函数较小,并且您在此查询中具有两个值。只需确保您已为 your_time_column 编制索引。
    【解决方案3】:

    这个怎么样?

    SELECT MAX(`date`), MIN(`date`)
    FROM your_table;
    

    date 上的索引会有所帮助。

    【讨论】:

      【解决方案4】:

      使用 mysql min()max() 选择第一个和最后一个日期

      select min(date),max(date) from table;
      

      【讨论】:

        【解决方案5】:

        实际上,如果您在 php 中按日期SELECT * FROM table_name ORDER BY date 排序查询,您可以轻松获取第一个和最后一个日期:

        第一:$first_date = reset($result);
        最后:$last_date = end($result);

        【讨论】:

          【解决方案6】:

          您可以进行 2 个查询(第一个日期为 1 个,最后一个日期为 1 个)并将它们合并。

          (SELECT the_date FROM table ORDER BY the_date ACS  LIMIT 1)
          UNION
          (SELECT the_date FROM table ORDER BY the_date DESC LIMIT 1)
          

          【讨论】:

            猜你喜欢
            • 2015-05-16
            • 1970-01-01
            • 2017-03-07
            • 1970-01-01
            • 2014-12-14
            • 2012-11-06
            • 2012-05-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多