2014-12-03 23 views
0

我一直試圖找到這個答案很長一段時間沒有用。這是我必須做的。我在下面的table中創建了第一個記錄。然後,我想安排一週一次的活動,以便將新記錄插入此table。我所需要做的就是每週一次在table的最後一行的字段中添加一週。在MySQL中安排事件

首選的輸出(像這樣)

+----+------------+------------+ 
| 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 && 

回答

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 && 

這將輸入第一個值,並在每個星期四繼續添加一行直到週四結束。

+0

哇謝謝,我會給這個鏡頭,但它是明確的洞察力。 +1 up'ed – Rafael 2014-12-03 04:28:49

+0

說我在代碼 – Rafael 2014-12-03 04:38:24

+0

的第一部分的語法錯誤對不起,我缺少一個括號,現在修復它。 – 2014-12-03 04:43:37