【问题标题】:How can I get data from today set in PHP? [duplicate]如何从 PHP 中获取今天设置的数据? [复制]
【发布时间】:2020-07-07 08:26:24
【问题描述】:

我的 updated 字段是 DATETIME,这就是我想要的。

$date = '2020-03-24';
$sql = "
SELECT * FROM test
WHERE DATE_FORMAT(updated, '%Y-%m-%d') = " . $date. "
";
$stmt = $db->query($sql);
$rows = $stmt->fetchAll();

执行上述操作时,我得到一个空结果。

问题

无论时间是什么时候,我如何才能得到日期来自$date 的结果?如果我可以使用 PHP,我可以使用 substr,但这在 sql 中是不可能的。

【问题讨论】:

  • 为什么不直接使用00:00:00?无需更多工作即可满足 MySQL 和您的问题。或者你想从一个日期获取记录?在这种情况下,我认为某处存在欺骗
  • 请注意,在您的 SQL 中,日期需要用引号引起来 ('" . $date ."'),尽管您应该使用准备好的语句

标签: php mysql date datetime select


【解决方案1】:

一种有效的方法是:

where updated >= :date and updated < :date + interval 1 day

...其中:date 是来自您的应用程序的日期参数。

一种效率较低的方法是:

where date(updated) >= :date

这需要在过滤之前对每条记录应用一个日期函数,这会阻止数据库利用日期列上的现有索引。

【讨论】:

  • 第一个不起作用,因为 $date 是一个字符串,而不是整数。因此它无法比较它是否大于或小于更新。
  • @JensTörnell:MySQL 理解日期算术......第一个解决方案应该有效并且比第二个更有效,你真的尝试过吗?
【解决方案2】:
$sql = "
SELECT * FROM test
WHERE DATE_FORMAT(updated, '%Y-%m-%d') = '" . $date. "'
";

应该有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多