0

我正在尝试基于日期运行查询以更改今天的所有内容,但是具有日期的字段是日期时间字段,我无法更改。我的 date_modified 字段中的值看起来像 2013-10-25 07:05:43。我知道查询没有日期。如果我只使用 Navicat 并将查询的 where 子句运行为:

WHERE  inventory.date_modified like '2013-10-25%'

它运行良好。我在其他 SO 帖子中发现了一些想法,当我尝试将其放入我的 php 代码中时:

$today = date("Y-m-d");  $today = '%' . $today . '%';

然后我的where子句是:

WHERE inventory.date_modified like $today

我得到了试图解析非对象的致命错误。我知道 $today 中有一个值,但我不清楚如何使用我的 php 代码执行此操作?

4

3 回答 3

0

您忘记在数据库值上设置引号:

WHERE inventory.date_modified like '$today'
于 2013-10-25T13:14:11.053 回答
0

试试这个代码: -

 $today = '2013-10-25';

 SELECT * FROM inventory  WHERE DATE_FORMAT(inventory.date_modified, "%Y-%m-%d") = $today;
于 2013-10-25T14:25:09.770 回答
0

最好的解决方案是问题评论中的NB。因为,如果您在 field 上有索引date_modified,它将被使用。

因此,如果您的日期格式为Y-m-d,就像您在 中一样$today,您可以执行以下操作:

$sql = "
    ...
    WHERE inventory.date_modified BETWEEN '$today 00:00:00' AND '$today 23:59:59'
    ...
";

另一个例子是,使用DATE()函数从日期时间获取日期部分:

$sql = "
    ...
    WHERE DATE(inventory.date_modified) = '$today'
    ...
";

但是,如果您在 field 上有索引,则此示例并不好date_modified,因为它将被忽略,并且将扫描整个表。

于 2013-10-27T11:15:31.473 回答