【问题标题】:MySQL - calculate start and end date of monthsMySQL - 计算月份的开始和结束日期
【发布时间】:2021-03-25 06:42:39
【问题描述】:

我有桌子months:

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

我将年份存储在一个变量中:

SET @year = YEAR(CURDATE());

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

CONCAT(@year, '-', LPAD(months.id, 2, '0'), '-', '01') AS start_date,
CONCAT(@year, '-', LPAD(months.id, 2, '0'), '-', '31') AS end_date

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

【问题讨论】:

  • 你为什么有一个表月?

标签: mysql sql


【解决方案1】:

您可以使用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 是一个小数据库小提琴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2020-08-21
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多