gpt4 book ai didi

mysql - 如何将两组日期之间的每个日期存储在单独的列中

转载 作者:行者123 更新时间:2023-11-28 23:32:04 24 4
gpt4 key购买 nike

我有一个像这样的表 A:

id  |    valid_from_date    |      valid_to_date     |
1 | 2015-05-01 23:15:01 | 2015-05-02 10:20:23 |
2 | 2015-07-13 10:25:02 | 2015-07-14 18:20:45 |

我希望能够按照以下格式获取每个 ID 的 valid_from_date 和 valid_to_date 之间的所有日期,然后我打算将其放入新表中:

id  |   date     |
1 | 2015-05-01 |
1 | 2015-05-02 |
2 | 2015-07-13 |
2 | 2015-07-14 |

实现此目标的最佳方法是什么?

谢谢。

最佳答案

我不知道这是不是最好的方法....但它提供了必需的输出....

创建 tableb 为:

CREATE TABLE `tableb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dates` date DEFAULT NULL,
`aid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

现在, <罢工>

<罢工>
insert into tableb(aid,dates) select id,date(valid_from_date) as dates
from tablea union select
id,date(valid_to_date) as dates from tablea order by id;

<罢工>

可能存储过程是正确的选项:

CREATE PROCEDURE `test_procedure`()
BEGIN
DECLARE aid INT;
DECLARE avalid_from_date date;
DECLARE avalid_to_date date;
DECLARE tempdt date;
DECLARE done INT DEFAULT FALSE;
DECLARE getdates CURSOR FOR SELECT * from tablea;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN getdates;

read_loop: LOOP
FETCH getdates INTO aid,avalid_from_date,avalid_to_date;

IF done THEN
LEAVE read_loop;
END IF;

set tempdt=date(avalid_from_date);

WHILE (tempdt <= date(avalid_to_date)) do
insert into tableb(dates,aid) values( tempdt,aid);
set tempdt=tempdt+INTERVAL 1 DAY;
end while;


END LOOP;
CLOSE getdates;
END

现在,就call test_procedure;所有输出行将被插入到 tableb 中。

关于mysql - 如何将两组日期之间的每个日期存储在单独的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37042855/

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