2012-11-22 85 views
0

我有一個數據庫,用戶輸入日期,其中包括下拉日曆,日期格式是這種格式21-NOV-2012。 有沒有辦法用日期範圍搜索數據庫? 我目前使用以下::搜索mysql數據庫的日期範圍

sql ="SELECT * FROM ircb WHERE date LIKE '%$term1%' AND date LIKE '%$term2%' LIMIT $start_from, 15"; 

字詞1是月,期限2年是搜索日期,這不允許日期範圍一個月內只爲一個月。 讚賞任何幫助,感謝

+0

您是否沒有使用時態數據類型存儲日期?否則,您需要重新考慮設計。 – GordonM

+0

它也看起來像你的月份和年份字段甚至可能不是整數。你真的需要重新考慮這種情況下的設計。 – Sammitch

回答

2

我知道這並不能真正解決你的問題,但我想這是一個測試(你可以訪問數據庫),並會告訴你更好的風險越來越火燒自己的方法,因爲我會感到內疚,如果不告訴你什麼是正確的方式來做到這一點:

你應該在你的數據庫中有一個日期類型字段(我假設mysql)並將整個日期存儲在該字段,並且mysql可以使用該日期進行搜索(通常標準日期格式爲YYYY-MM-DD)。

你只需要做:

SELECT * FROM TABLE WHERE date > 'your date'; 
or ........................... < 'your date'; 
or .................WHERE date BETWEEN 'date1' AND 'date2'; 

它可以讓你做的那些類型的操作都必須在一個更容易和人類可讀的方式。

如果您有興趣,也可以看看datetime,因爲您可以做同樣的事情,但同一天的時間也包含在同一個領域! :D

對字段類型有很好的看法,因爲數據庫的健康和優化至關重要。

+0

聽起來很棒一個去,使用BETWEEN的第一個建議沒有工作,我的日期是使用日期選擇器以前面指出的格式獲得,值存儲在數據庫中我稱爲cdate的字段,它被設置爲:: cdate varchar(40)latin1_swedish_ci不,我猜這個字段是不正確的,謝謝 – user1356282

+0

不,你正在使用的類型是varchar,查找「日期」 – aleation

+0

ok,更改表字段的日期和默認值顯示爲0000-00-00,怎麼做我現在使用日期選擇器來正確插入這些值? – user1356282

0
date >= '$term2-$term1-01' AND date < DATE_ADD('$term2-$term1-01', INTERVAL 1 MONTH) 
+0

對不起,如何在響應框中以正確的格式發佈代碼? – user1356282

+0

似乎不工作,條款進入,我呼應他們,以確保他們通過,他們是。然而,「選擇*從ircb WHERE cdate>'%term1%'結果給所有結果,如果我使用BETWEEN TERM1和TERM2沒有結果返回 – user1356282

+1

沒關係,得到它的工作,非常感謝,非常感謝 – user1356282

0

我認爲這應該工作。

sql ="SELECT * FROM ircb WHERE date BETWEEN '$term1' AND '$term2' LIMIT $start_from, 15"; 

BETWEEN會讓你獲取範圍的日期,你可以刪除那些LIKE

+0

這裏是我的網頁上的輸入字段看起來像使用datepicker進行日期插入 – user1356282