3

fromaとtoMySQLの日付の間のすべての日付を表示したい。

たとえば、フィールドscheduleを持つテーブルのデータは次のとおりです。fromto

from日付は2013-3-13、、

to日付は2013-3-20

私の望ましい結果は次のとおりです。

 2013-3-13
 2013-3-14
 2013-3-15
 2013-3-16
 2013-3-17
 2013-3-18
 2013-3-19
 2013-3-20

MySQLクエリのみを使用してこれを実現するにはどうすればよいですか(ストアドプロシージャに慣れていないため、ストアドプロシージャを使用する必要はありません)。

編集:

ここでの答えは非常に役立ちますが、私はまだ完全に望ましいものを得ることができません。このサンプルでは、​​正常に実行されるだけで、何も出力されません。そして、何が問題なのかわかりません。

助けてください。ありがとう!

4

2 に答える 2

8

以下を使用して、日付のリストを生成できます。

select a.Date,  s.*
from 
(
  select curdate() + INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
  from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
inner join schedule s
  on a.Date >= s.fromDate 
  and a.Date <= s.toDate

デモで SQL Fiddle を参照してください

于 2013-03-05T13:13:36.607 に答える
-4

日付が2013-3-13で、日付が2013-3-20である場所を試してください。

"SELECT * FROM schedule WHERE Field BETWEEN $fromdate AND $todate";
于 2013-03-05T12:13:58.993 に答える