我有桌子 months
:
id name
=============
1 January
2 February
3 March
.. ........
我将年份存储在变量中:
SET @year = YEAR(CURDATE());
我现在想要 2 个新列:start_date
和 end_date
- 这两个列都将包含基于 id
和 {{1} 的月份的开始日期和结束日期} 多变的。这将采用标准的 MySQL @year
列格式。目前我有这个:
date
这确实有效,但有更好/更清洁的方法吗?有没有办法自动获取当月的实际最后一天?
答案 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 是一个小数据库<>小提琴。