MySQL - 计算月份的开始和结束日期

时间:2021-03-24 22:35:19

标签: mysql sql

我有桌子 months

id   name
=============
1    January
2    February
3    March
..   ........

我将年份存储在变量中:

SET @year = YEAR(CURDATE());

我现在想要 2 个新列:start_dateend_date - 这两个列都将包含基于 id 和 {{1} 的月份的开始日期和结束日期} 多变的。这将采用标准的 MySQL @year 列格式。目前我有这个:

date

这确实有效,但有更好/更清洁的方法吗?有没有办法自动获取当月的实际最后一天?

1 个答案:

答案 0 :(得分:2)

您可以使用 date() 和字符串获取一年中的第一天。其余的可以使用日期函数和运算符完成:

select m.*,
       date(concat(year(curdate()), '-01-01')) + interval (id - 1) month as month_start,
       last_day(date(concat(year(curdate()), '-01-01')) + interval (id - 1) month) as month_end
from months m;

Here 是一个小数据库<>小提琴。