我想创建一个使用日期范围过滤表中记录的查询。
我有这个现有的功能,通过"类型"来过滤记录。自动,但如何将参数附加到此函数,该函数使用日期范围仅显示该范围内的记录?
比如说,找一个介于2015年4月1日到2015年4月30日之间的记录。
public function getByType() {
$query = $this->pdo->prepare("SELECT * FROM `" . $this->table . "` WHERE type='hod'");
$query->execute();
if ($query->rowCount() == 0) return null;
}
谢谢!
答案 0 :(得分: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')