2012-01-11 97 views
1

为了创建一个过滤器下拉列表,我需要找出mysql表中的第一个和最后一个日期。我指的是一个有日期的字段。如何获取mysql数据库表中的第一个和最后一个日期

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

任何更好的建议..我的解决方案似乎是非常低效的,一旦有一个巨大的数据集。

回答

2

这是怎么回事?

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

date上的索引将有所帮助。

1

其实,如果你按日期SELECT * FROM table_name ORDER BY date在PHP命令查询,您可以轻松地获得第一和最后一个日期:

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

1

可以使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) 
8

最小日期:

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; 
+0

其中这些选项是更有效的 – Roeland 2012-01-11 06:52:51

+1

http://stackoverflow.com/questions/426731/min-max-vs-order-by-and-limit – 2012-01-11 07:02:50

4

切勿拉扯所有记录!使用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

+0

这些选项是更有效的 – Roeland 2012-01-11 06:52:46

+0

该一个与聚合函数(MIN(),MAX())较小,并且您有这个查询的两个值。只要确保你有索引your_time_column。 – 2012-01-11 07:08:59

2

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

select min(date),max(date) from table; 
相关问题