2015-10-21 60 views
0

我想創建一個查詢,使用日期範圍過濾表中的記錄。MySQL按日期範圍查詢過濾器

  • 該表具有一個遵循MM/DD/YYYY格式的「日期」列。

我有這個現有的函數,自動過濾「類型」的記錄,但我怎麼能附加參數到這個函數使用日期範圍只顯示範圍內的記錄?

舉例來說,查找在04/01/2015和04/30/2015之間的記錄。

public function getByType() { 

    $query = $this->pdo->prepare("SELECT * FROM `" . $this->table . "` WHERE type='hod'"); 
    $query->execute(); 

     if ($query->rowCount() == 0) return null; 

} 

謝謝!

+2

MySQL的存儲過多使用日期類型YYYY-MM-DD –

回答

3

您正在存儲具有錯誤數據類型的日期。將日期存儲爲varchar字符串就像在您的應用程序中引入邪惡一樣。你應該總是存儲在MySQL原生日期等數據類型日期date,datetime,timestamp等與日期Y-m-d格式

然而,在目前的情況下,你可以使用str_to_date函數來完成這項工作,但長遠來看,你應該想想這些修正。

所以在這裏它是如何工作

mysql> select str_to_date('04/01/2015','%m/%d/%Y') as d ; 
+------------+ 
| d   | 
+------------+ 
| 2015-04-01 | 
+------------+ 

所以查詢,你可以爲

SELECT * FROM table_name 
WHERE 
type='hod' 
and str_to_date(date,'%m/%d/%Y') between str_to_date('04/01/2015','%m/%d/%Y') 
and str_to_date('04/30/2015','%m/%d/%Y') 
+0

謝謝!像魅力一樣工作。我將在數據庫中更新我的日期以使用MySQL日期類型。 – cpcdev