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.
的三个单独的列
我 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.
的三个单独的列