2011-09-01 33 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列的日期。

查詢獲取所有行的日期=月份的最後一天。

相關問題