2011-09-01 53 views
3

比如我有一个字段的表:得到所有月份的最后几天在MySQL

id  date 
1  2001-01-01 
2  2001-01-05 
................. 
N  2011-12-31 

如何得到我所获得的所有月份从该表中最后的日子? 例如:

如果我有像2001-05-31和2001-06-01 日期我只需要2001-05-31不能同时

+0

本月的最后一天,比如30日,31日?或者您的表中当月的最新日期? – sealz

回答

0

我找到了解决方案。但是这个查询在大型表上非常慢。所以我仍在寻找更好的解决方案

select DISTINCT(LAST_DAY(date)) from table; 
10

你可以做SELECT LAST_DAY例如下面的返回10月31日。 2010

SELECT LAST_DAY('2010-10-10'); 
+2

+1你拥有我!我不知道这个功能存在! – Bohemian

+0

谢谢!它是一个很好的! – sealz

-1
select max(date) 
from table 
group by year(date), month(date) 
+2

它将从最后一天的月份返回最大日值。如果我有像2001-05-31和2001-06-01的日期,我只需要第一个 – errx

0
select subdate(adddate(subdate(`date`, day(`date`) - 1), interval 1 month), 1) 

注:这是 “硬办法”。请参阅@ harper89的答案 - 更好:)

1
select max(date_format(date, '%d')) as last_day_of_the_month 
from table 
group by date_format(date, '%Y%m') 
1

也许这会工作更好?

select DISTINCT(LAST_DAY(date)) from table GROUP BY date_format(date, '%Y%m') 
0
SELECT id, date 
FROM `table` 
WHERE DATE(date) = LAST_DAY(date) 

过场的日期功能是过滤器没有时间,只使用,如果你有一个datetime列的日期。

查询获取所有行的日期=月份的最后一天。

相关问题