我一直试图找到这个答案很长一段时间没有用。这是我必须做的。我在下面的table
创建了第一条记录。然后我想安排一个每周一次的事件,以便在此table
中插入新记录。我需要的是这个事件要做的是每周从table
的最后一行字段添加一周。
首选输出(类似这样)
+----+------------+------------+
| id | start | end |
+----+------------+------------+
| 1 | 2014-12-04 | 2014-12-11 | <-- Manually Inputed (base dates)
| 2 | 2014-12-11 | 2014-12-18 | <-- SQL Scheduled Events below
| 3 | 2014-12-18 | 2014-12-25 | (Every Thursday :D)
| 4 | 2014-12-25 | 2015-01-01 |
+----+------------+------------+
到目前为止的SQL语句
INSERT INTO `publication_dates` (`id`, `Start`, `End`) VALUES (null,"2014-12-04", DATE_ADD("2014-12-04",INTERVAL +1 WEEK));
我还没有为此创建一个事件,因为我根本不知道如何从它之前的行中获取信息。这将帮助我克服我在laravel项目中遇到的障碍。
感谢您提前的时间!
的MySQL Systax错误
DELIMITER &&
CREATE EVENT new_publication
ON SCHEDULE EVERY 1 WEEK STARTS '2014-12-04 00:00:00'
DO BEGIN
INSERT INTO publication_dates (`Start`, `End`)
VALUES (NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));
END &&
答案 0 :(得分:2)
如果您也允许事件创建第一行,则可以使用mysql event scheduler来实现此目的。
在您要输入的第一个日期开始活动。事件应该在下面运行插入查询。
INSERT INTO publication_dates (`start`, `end`)
VALUES (NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));
要使事件起作用,您需要启用事件调度程序的mysql实例,或者您可以通过运行此查询将其打开:
SET GLOBAL event_scheduler = ON;
然后你必须创建一个每周四运行的事件,比如在午夜。
DELIMITER &&
CREATE EVENT run_on_thursdays
ON SCHEDULE EVERY 1 WEEK STARTS <starting thursday> ENDS <ending thursday>
do begin
<the insert query from above>
END &&
这将输入第一个值,并在每个星期四继续添加一行,直到星期四结束。