繁体   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