[英]How to do recurring dates with php/MySQL
我有一張桌子:
table Event
- name
- description
- date (in format 2011-08-06 11:00:00)
- id
我需要創建重復事件 。
如何最好地復制具有幾乎相同的數據(名稱,描述)的行,但是更改日期?
假設如果我有一個活動發生在8月6日,那么我想在8月13日,20日,27日(每個星期六)再創建三個活動
另外,使用mySQL查詢可以更好地完成此操作嗎? 我猜是因為日期格式所以...但是任何建議都將不勝感激。
MySQL
缺少生成器功能(這將允許從頭開始創建任意長度的記錄集),因此,如果記錄數固定,則可以執行以下操作:
INSERT
INTO event (name, description, date)
SELECT name, description, date + INTERVAL n WEEK
FROM (
SELECT 1 AS n
UNION ALL
SELECT 2 AS n
UNION ALL
SELECT 3 AS n
) q
JOIN event
ON id = $myid
如您所見,查詢布局取決於要創建的事件數,而使用純SQL
則無法對其進行參數化。
但是,您可以創建一個存儲過程,並僅在循環中調用INSERT
:
CREATE PROCEDURE prc_fill_event (p_id INT, p_cnt INT)
BEGIN
DECLARE _cnt INT;
SET _cnt = 1;
WHILE _cnt <= p_cnt DO
INSERT
INTO event (name, description, date)
SELECT name, description, date + INTERVAL _cnt WEEK
FROM event
WHERE id = p_id;
SET _cnt = _cnt + 1;
END WHILE;
END
要看。 如果這是一個無窮無盡的重復日期,那么將會創建很多行。 否則,您必須為此選擇一些限制,這會使問題復雜化。
也許最好有其他列描述重復發生的事件,然后在視圖層中相應地呈現它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.