MySQL按日期范围筛选查询

时间:2015-10-21 14:34:45

标签: php mysql

我想创建一个使用日期范围过滤表中记录的查询。

  • 表中有一个" date"遵循MM / DD / YYYY格式的列。

我有这个现有的功能,通过"类型"来过滤记录。自动,但如何将参数附加到此函数,该函数使用日期范围仅显示该范围内的记录?

比如说,找一个介于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;

}

谢谢!

1 个答案:

答案 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')