2013-02-19 16 views
1

我有一個數據庫,它包含兩位信息。從日期到日期。我需要每天在我的日曆中出現這個條目,但我只能設法出現在第一個和最後一個日期。 DB的從日期到時間 - 搜索和顯示

例如:

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

編輯的問題。我有搜索欄允許輸入一個日期,日曆通過date1和接下來的6天查找條目。

我不能有一個包含兩個日期輸入的搜索,因爲我的用戶很習慣這種方式,我不想增加搜索時間。我開始認爲我必須找到日期之間的日期,將其添加到array然後使用if statement找到匹配項......但即使這樣說對我來說也沒有意義。

關於工作1,我需要我的日曆才能在28/29/30/31/01/02/03的所有日期顯示此工作。

我當前搜索SELECT * FROM jobs WHERE date1='$searchinput' PER日和日曆此搜索。我使用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匹配。我不需要這樣,因爲以前我只有一天有工作了,現在他們出去超過一天,並且需要在所有日子裏注意到工作僅僅使用了從日期和工作到目前爲止的工作。

編輯2:

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

此查詢選擇我需要什麼,但是我用的還是第一WHERE子句可以爲空。我需要永遠在條款中。我一直在尋找使用IIFCASE來糾正,但不是如何實施100%......?

+0

你必須用引號包圍'$ date1'&'$ date2'。例如'$ date1 ='2013-01-28';' – Raptor 2013-02-19 12:34:52

+0

你可以顯示你到目前爲止的代碼嗎?也許這會更好地解釋你想要做的事情。 – 2013-02-19 14:54:19

+0

問題修正 – Brobina 2013-02-20 09:16:08

回答

1

產生兩個日期之間的天列表:

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

Demo

更新

誤讀似乎問題,如果這兩個日期都存儲爲列,你有一個日期查詢:

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 
+0

我用你的第一次更新,做了你的第二次,perfecto。頭部現在可以停止分裂 – Brobina 2013-02-22 15:59:09

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 
+0

+1對你....你太快了我 – Gautam3164 2013-02-19 12:23:14

+0

我沒有正確地問我的問題在所有。這回答了上述,但我需要的是更復雜。 – Brobina 2013-02-19 14:25:38

+0

和它會是什麼問題? ':D' – 2013-02-19 14:27:51

0

嘗試像DATE1之間的這種

SELECT * FROM Mytimetable WHERE date BETWEEN 'date1' AND 'date2' 
0

查詢 - 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) 
0

查詢使用PHP變量選擇兩個日期之間的日期。 我會解釋exapmle:

$ date1 =「2013-02-19」; $ date2 =「2013-02-25」;

那麼SQL查詢將是:

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

希望解決您的問題