簡體   English   中英

如何使用php / MySQL做重復日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM