0

結果セットの日数として複数のレコードのイベントを選択するにはどうすればよいですか?

例:

id     |     event    |     dateFrom            |       dateTo
1           festival     2012-06-15 01:18:00        2012-06-17 01:18:00

結果:

id    |  date
1       2012-06-15 
1       2012-06-16
1       2012-06-17  
4

2 に答える 2

1

できません。最善の方法は、1年のすべての日付で満たされた単純なテーブルを作成することです。簡単なストアドプロシージャを作成しました。

CREATE DEFINER = 'root_extern'@'%' PROCEDURE fill_calendar 
(
  IN  start_date  date,
  IN  end_date    date
)
BEGIN
  DECLARE crt_date DATE;
  SET crt_date=start_date;
  WHILE crt_date < end_date DO
    INSERT INTO `calendar` (`date`) VALUES (crt_date);
    SET crt_date = ADDDATE(crt_date, INTERVAL 1 DAY);
  END WHILE;
END|

クエリは次のようになります。 SELECT date FROM calendar WHERE date BETWEEN dateFrom AND dateTo

于 2012-06-08T12:21:45.310 に答える
0

次のようなユニオンを使用します。

(SELECT id, dateFrom date FROM table) UNION (SELECT id, dateTo date FROM table)
于 2012-06-08T12:19:40.513 に答える