PHP:在日期时间之间搜索MYSQL数据库但仅使用日期?

时间:2017-08-18 14:04:53

标签: php mysql datetime

我在MYSQL中有一个列存储日期时间,如下所示:

2017-08-18 08:59:53
2017-08-18 07:59:00

我可以搜索数据库并在datetime列之间返回结果,如下所示:

$from = date("Y-m-d H:i:s", strtotime($_GET['from']));
$to = date("Y-m-d H:i:s", strtotime($_GET['to']));

$sql1="SELECT * FROM `Table` WHERE mydate>='$to' and mydate<='$from'";

只要我这样搜索就可以了。

2017-08-18 08:59:53

但我需要做的就是像这样搜索:

2017-08-18

我搜索时仍会得到相同的结果。

我不想在搜索字符串/查询中使用时间。

3 个答案:

答案 0 :(得分:5)

尝试使用mysql date()函数:

$sql1="SELECT * FROM `Table` WHERE date(mydate)>='$to' and date(mydate)<='$from'";

mysql date()函数仅以默认Y-m-d格式从datetime列返回日期部分。

答案 1 :(得分:1)

你非常接近。如果您要在DATETIME或其他日期戳列中搜索特定日期的匹配项,请执行以下操作:

WHERE mydate >= DATE(whatever_first_day)
  AND mydate  < DATE(whatever_last_day) + INTERVAL 1 DAY

这会搜索whatever_first_day中提到的日期的所有内容,从该日期的午夜开始,以及{{1}后一天午夜的所有内容,但不包括(<) }。

这种搜索方式是sargable: it can use an index on the mydate column

您也可以使用

whatever_last_day

但这不是可以接受的。

答案 2 :(得分:0)

"SELECT * FROM `Table` WHERE date_format(mydate,"%Y-%m-%d")>='$to' and date_format(mydate,"%Y-%m-%d")<='$from'";