1

2ビットの情報を保持するデータベースがあります。日付から日付まで。このエントリを毎日カレンダーに表示する必要がありますが、最初と最後の日付にしか表示されません。

DBの例:

   job_no | date1(from)| date2(to)
   ________________________________
   1      |2013-01-28  | 2013-02-03
   2      |2013-01-14  | 2013-01-18

質問のために編集します。私が持っている検索バーでは1つの日付入力が可能で、カレンダーはdate1から次の6日間までのエントリを検索します。

私のユーザーはこの方法に慣れていて、検索時間を増やしたくないので、2つの日付入力を含む検索を行うことはできません。私は日付の間の日付を見つけなければならないと思い始め、それを追加してから、一致するものを見つけるためarrayにを使用if statementします...しかし、これは私には意味がありません。

ジョブ1に関しては、28/29/30/31/01/02/03のすべての日付にこのジョブを表示するためにカレンダーが必要です。

私の現在のSELECT * FROM jobs WHERE date1='$searchinput'1日あたりの検索数とこの検索のカレンダー。strtotimeを使用して、入力日を+1増やし、毎日の検索に追加します。

カレンダーページ。

結果に欲しいもの。ユーザーは日付28日を検索しました。

 Mon 28          |      Tues 29     |    Wed 30     ...... | Fri 03    |
_________________________________________________________________________
   Job no 1      |      job no 1    |   job no 1    ...... | job no 1

私が今持っているもの。

  Mon 28       |      Tues 29     |    Wed 30     ...... | Fri 03    |
    _________________________________________________________________________
 Job no 1      |      blank       |      blank           | job no 1

現在、毎日新しい選択クエリがあります。日付1と日付2の日と一致します。以前は1日しか仕事がなかったので、これは必要ありません。現在は1日以上外出しており、すべての日に仕事を記録する必要があります。日付からの仕事と日付への仕事。

編集2:

SELECT * FROM calender_db NATURAL JOIN job_db 
WHERE section='two' 
AND date1 < '$day' AND date2 > '$day' 
OR date1 = '$day' OR date2 = '$day' 

このクエリは必要なものを選択しますが、ORを使用しているため、最初のWHERECLAUSEはnullになる可能性があります。私はそれが常に条項に含まれる必要があります。私は使用IIFまたはCASE修正することを検討してきましたが、100%を実装する方法はありません...?

4

6 に答える 6

5

使わない理由BETWEEN

SELECT * FROM tableName WHERE date BETWEEN 'date1' AND 'date2'

更新 1

SELECT * 
FROM tableName 
WHERE date BETWEEN '2013-01-28' AND '2013-01-28' + INTERVAL 6 DAY
于 2013-02-19T12:21:50.550 に答える
1

2 つの日付の間の日のリストを生成するには:

$days = array();
$stop = strtotime($date2);
for ($current = strtotime($date1); $current <= $stop; $current = strtotime('+1 days', $current)) {
    $days[] = date('d', $current);
}
echo join('/', $days);

デモ

アップデート

両方の日付が列として保存されていて、単一の日付でクエリを実行している場合、質問が誤解されています。

SELECT *
FROM jobs 
WHERE 'date_from_input' BETWEEN date1 AND date2

更新 2

最新のクエリは次のように記述できます。

SELECT * 
FROM calender_db NATURAL JOIN job_db 
WHERE section='two' AND '$day' BETWEEN date1 AND date2
于 2013-02-19T12:28:14.213 に答える
0

このようにしてみてください

SELECT * FROM Mytimetable WHERE date BETWEEN 'date1' AND 'date2'
于 2013-02-19T12:22:54.363 に答える
0

date1 - date2 間のクエリ

SELECT *
FROM `objects`
WHERE (date_field BETWEEN '2013-01-30 14:15:55' AND '2013-02-19 10:15:55')

OR

SELECT *
FROM `objects`
WHERE (date_field BETWEEN date1 AND date2)
于 2013-02-19T12:23:25.020 に答える
0

PHP 変数を使用して 2 つの日付の間の日付を選択するクエリ。私は例で説明します:

$date1 = "2013-02-19"; $date2 = "2013-02-25";

次に、SQLクエリは次のようになります。

$query  = " SELECT * FROM table_xyz where (date_item BETWEEN date('".$date1."') AND date('".$date2."')";

それがあなたの問題を解決することを願っています

于 2013-02-19T12:35:59.790 に答える