我需要一个 2 列 12 行的表作为 MySQL/SQL 查询的结果:
- 第一列是当年的 12 个月。
- 第二列是每个月的天数。
表格应类似于:
- 月 天
- 1 月 31 日
- 2 月 28 日
- ... ...
- 12 月 31 日
我尝试过:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_loop$$
CREATE PROCEDURE my_loop()
BEGIN
DECLARE x INT;
SET x = 1;
WHILE x <= 12 DO
SELECT monthname(SUBDATE("2019-12-01", INTERVAL x month)) as months, day(LAST_DAY(SUBDATE("2019-12-01", INTERVAL x month))) as days;
SET x = x + 1;
END WHILE;
END$$
DELIMITER ;
call my_loop();
但它只打印出第一次迭代:
- 月日
- 1 月 31 日
如何在有或没有迭代的情况下解决这个问题?
最佳答案
您可以通过查询来完成此操作:
select monthname(makedate(year(curdate()), 1) + interval (x.mon - 1) month) as month_name,
day(last_day(makedate(year(curdate()), 1) + interval (x.mon - 1) month)) as days_in_month
from (select 1 as mon union all select 2 union all select 3 union all select 4 union all
select 5 as mon union all select 6 union all select 7 union all select 8 union all
select 9 as mon union all select 10 union all select 11 union all select 12
) x
order by x.mon;
Here是一个数据库<> fiddle 。
关于mysql - 如何用SQL查询当年的月份和天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57459617/