2011-01-06 21 views
4

私のレコードの日付範囲の間の特定の日付をクエリする方法がMySQL 4.1+であるかどうか疑問に思っていますか?日付の間のMySQLの日付

迅速たとえば、私が知りたいのは何

ID | Activity | Start Date   | End Date 

1  Closed  1/1/11 11:00:00  1/4/11 11:00:00 

2  Open   1/15/11 10:00:00  1/19/11 09:00:00 

のように、日時の範囲を持つ2つのレコードを持っているが、私は「開始日」と「エンド間の日数を取得することができます方法はありこれらのレコードごとに「日付」を指定しますか?そのような:

1/2/11、1/3/11

そして

1/16/11、1/17/11、

かで1/18/11それに近づき、残りの部分を完了するためにPHPを使用する方法はありますか?ありがとう!

+0

そこには2番目のティーヤがありますか? – Diablo

+0

あなたはその日に何をしたいですか?それらの間のレコードを取得するか、開始日と終了日の間の日付のみを取得しますか? –

+0

これはすべて1つのテーブルにあります。私は少なくとも日、月、年を取得したいと思います。私は実際に曜日を除外したい - イベントは1時間ごとに発生するので、その日自体はイベントによって影響を受けない(例えば、ある日は6時間閉じても、その最初の4時間は開いている日) – Jordan

答えて

0

ヨルダン、

これは、MySQL 4と直接は不可能であると私は、このロジックは、データベース層に置かれるべきではないと思います。

しかし、StackOverflowにはあなたの問題に関連する問題があり、ソリューションはストアドプロシージャです(ただし、mysql 5が必要です)。ここでそれを見る:Get a list of dates between two dates

を、私はこのウェブページでPHPで使用する準備ができて、しかし、あなたの問題への賢明なアプローチではないが見つかりました:これは正しい方向にあなたを助け http://prajapatinilesh.wordpress.com/2009/05/07/get-all-dates-between-two-dates-using-php-code/

希望を。

+0

ありがとう、私は見てみましょう。私はPHPソリューションを使用しても構いませんが、可能であればクエリを最大限に活用したいと考えています。 – Jordan

1

これかもしれないソール問題:

SELECT * FROM `your_table` WHERE start_date > '2011-01-01' AND end_date < '2011-01-04' 
0

私はこの前に自分自身のmysqlクエリでこれを実装しました。

SELECT id FROM table WHERE some_date BETWEEN start_date AND end_date