在mysql的最后几天得到所有月份

时间:2011-09-01 10:57:34

标签: mysql

例如,我有一个包含字段的表:

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

如何让我从这张桌子的最后几天获得所有月份? 例如:

如果我有2001-05-31和2001-06-01这样的日期 我只需要2001-05-31而不是两个

7 个答案:

答案 0 :(得分:10)

您可以执行SELECT LAST_DAY,例如以下返回10月31日。 2010

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

也许这会更好用吗?

select DISTINCT(LAST_DAY(date)) from table GROUP BY date_format(date, '%Y%m')

答案 3 :(得分:1)

SELECT id, date
FROM  `table` 
WHERE DATE( date ) = LAST_DAY( date ) 

DATE函数字段用于过滤没有时间的日期,仅在您拥有日期时间列时使用。

查询获取日期=月末的所有行。

答案 4 :(得分:0)

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

注意:这是“艰难的方式”。请参阅@ harper89的答案 - 最好:)

答案 5 :(得分:0)

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

select DISTINCT(LAST_DAY(date)) from table;

答案 6 :(得分:-1)

select max(date)
from table
group by year(date), month(date)