-1

私は Web フォームを作成しました。ユーザーは、間隔を表す 2 つの日付 (YYYY/MM/DD) と、1 日の活動に関するその他の情報を入力しました。

例: 2013/09/12 から 2013/10/02 の活動を選択: 水泳

その場合、私のテーブルは次のようになります。

   date     |  activity
2013/09/12  |  swimming
2013/09/13  |  swimming
2013/09/14  |  swimming
2013/09/15  |  swimming
2013/09/16  |  swimming

等々....

ユーザーから提供された日付 inveral の毎日のアクティビティを含む行を書き込む必要があります

何日も手動で反復せずにこれを行うことはできますか? 私はphp + mysqliを使用しています

編集:開始日と終了日に2つの列を使用できません

4

3 に答える 3

-1

あなたが手順を使用できるかどうか、私はあなたに手がかりを与えることができます:

DELIMITER $$

DROP PROCEDURE IF EXISTS `dowhile_thing`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `dowhile_thing`(dt_start DATE,dt_stop DATE, thing CHAR(20))
BEGIN
  DECLARE v1 INT DEFAULT 0;
CREATE TEMPORARY TABLE tmp (
  `day_name` VARCHAR(256) DEFAULT NULL,
  `date_change` DATE DEFAULT NULL,
  thing CHAR(20)
) ENGINE=MYISAM DEFAULT CHARSET=utf8  ;  


  SELECT TIMESTAMPDIFF(DAY, dt_start, dt_stop)+1  INTO v1;
  WHILE v1 > -1 DO
    INSERT tmp (SELECT DAYNAME( ADDDATE(dt_start, INTERVAL v1 DAY) ),ADDDATE(dt_start, INTERVAL v1 DAY),thing );
    SET v1 = v1 - 1;
  END WHILE;

SELECT * FROM tmp;  
DROP TEMPORARY TABLE IF EXISTS tmp;  

    END$$

DELIMITER ;

そして、次のように呼び出します。

CALL dowhile_thing('2013-06-10','2013-06-14','swim');

結果:

曜日名 | 日付変更 | もの

土曜日 | 2013-06-15 | 泳ぐ

金曜日 | 2013-06-14 | 泳ぐ

...

于 2013-09-12T09:33:31.687 に答える