gpt4 book ai didi

MySql View /过程按月列出一年中的所有星期

转载 作者:行者123 更新时间:2023-11-29 05:36:28 26 4
gpt4 key购买 nike

就像标题说的那样,我需要在一行中得到最终结果年月周...

类似的东西:

------------------------
| Year | Month | Week |
| 2012 | 1 | 1 |
| 2012 | 1 | 2 |
| 2012 | 1 | 3 |
| 2012 | 1 | 4 |
| 2012 | 1 | 5 |
| 2012 | 2 | 5 |

等等……

是否可以生成这样的 View (也使用一些支持表)?

最佳答案

您可以使用存储过程来完成:

DELIMITER $$

CREATE PROCEDURE createDatesTable()
BEGIN

DECLARE FullDate date;

DROP TABLE IF EXISTS dates;
CREATE TABLE dates(
date_key date NOT NULL,
calendarYear int NOT NULL,
calendarQuarter tinyint NOT NULL,
calendarMonthNo int NOT NULL,
calendarWeekNo tinyint NOT NULL,
dayNumberOfMonth tinyint NOT NULL,
dayNumberOfWeek tinyint NOT NULL,
PRIMARY KEY (date_key));

SET FullDate = '2012-01-01';

WHILE (FullDate <= '2012-12-31') DO
BEGIN

INSERT INTO dates(
date_key,
calendarYear,
calendarQuarter,
calendarMonthNo,
calendarWeekNo,
dayNumberOfMonth,
dayNumberOfWeek
)VALUES(
FullDate,
YEAR(FullDate),
QUARTER(FullDate),
MONTH(FullDate),
WEEK(FullDate, 1), /*Have a look at the WEEK() function in the manual!!!*/
DAYOFMONTH(FullDate),
DAYOFWEEK(FullDate)
);

SET FullDate = DATE_ADD(Fulldate, INTERVAL 1 DAY);
END;
END WHILE;
END ;
$$
DELIMITER ;

然后执行调用 createDatesTable()

你的 table 会被填满。

重要提示:ypercube 的评论是正确的。你必须考虑这一点。所以看看WEEK() function及其支持的模式。相应地调整程序。

关于MySql View /过程按月列出一年中的所有星期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com