我正在尝试根据日期运行查询以获取今天所有内容的更改,但是具有日期的字段是日期时间字段,我无法更改。我的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
我遇到了尝试解析非对象的致命错误。我知道今天有一个价值,但我不知道如何使用我的PHP代码执行此操作?
答案 0 :(得分:0)
您忘记在数据库值上设置引号:
WHERE inventory.date_modified like '$today'
答案 1 :(得分:0)
试试这段代码: -
$today = '2013-10-25';
SELECT * FROM inventory WHERE DATE_FORMAT(inventory.date_modified, "%Y-%m-%d") = $today;
答案 2 :(得分:0)
最佳解决方案是问题评论中的N.B.。因为,如果您在字段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'
...
";
但,如果您在字段date_modified
上有索引,则此示例效果不佳,因为它将被忽略,并且将扫描整个表格。