例如,我有一个包含字段的表:
id date
1 2001-01-01
2 2001-01-05
.................
N 2011-12-31
如何让我从这张桌子的最后几天获得所有月份? 例如:
如果我有2001-05-31和2001-06-01这样的日期 我只需要2001-05-31而不是两个
答案 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)