比如我有一个字段的表:得到所有月份的最后几天在MySQL
id date
1 2001-01-01
2 2001-01-05
.................
N 2011-12-31
如何得到我所获得的所有月份从该表中最后的日子? 例如:
如果我有像2001-05-31和2001-06-01 日期我只需要2001-05-31不能同时
比如我有一个字段的表:得到所有月份的最后几天在MySQL
id date
1 2001-01-01
2 2001-01-05
.................
N 2011-12-31
如何得到我所获得的所有月份从该表中最后的日子? 例如:
如果我有像2001-05-31和2001-06-01 日期我只需要2001-05-31不能同时
我找到了解决方案。但是这个查询在大型表上非常慢。所以我仍在寻找更好的解决方案
select DISTINCT(LAST_DAY(date)) from table;
select max(date)
from table
group by year(date), month(date)
它将从最后一天的月份返回最大日值。如果我有像2001-05-31和2001-06-01的日期,我只需要第一个 – errx
select subdate(adddate(subdate(`date`, day(`date`) - 1), interval 1 month), 1)
注:这是 “硬办法”。请参阅@ harper89的答案 - 更好:)
select max(date_format(date, '%d')) as last_day_of_the_month
from table
group by date_format(date, '%Y%m')
也许这会工作更好?
select DISTINCT(LAST_DAY(date)) from table GROUP BY date_format(date, '%Y%m')
SELECT id, date
FROM `table`
WHERE DATE(date) = LAST_DAY(date)
过场的日期功能是过滤器没有时间,只使用,如果你有一个datetime列的日期。
查询获取所有行的日期=月份的最后一天。
本月的最后一天,比如30日,31日?或者您的表中当月的最新日期? – sealz