Select按月最后一天记录

Select records according to month's last day

我 table 有 26 列,其中前 3 列是日、月、年。其余的列有一些我必须展示的信息。现在我必须根据月份的最后一天获取记录。 我试过写代码。

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day))

但这会从每个月的最后一天获取记录。当我没有实际的最后一天记录时,此代码将不起作用。所以我想要一些功能,比如那个月的最大日期,而不是 LAST_DAY。我怎样才能实现这个功能。

您想要数据中每个月的最后一个日期。为此:

select s.*
from subscription_stats s
where s.day = (select max(s2.day)
               from subscription_stats s2
               where s2.year = s.year and s2.month = s.month
              );

虽然这不会使此查询更简单,但您应该在 table 中将日期存储为 dates。也就是说,一个日期,而不是 year/month/day.

的三个单独的列