如何从sql中的特定日期获取数据

Vis*_*ese 5 php mysql datetime

我试图让数据的的当前日期在MySQL.我有一个名为列created_at存储日期和时间(2017-12-31 11:32:54)使用NOW()功能使用报表,

    $stmt = $this->conn->prepare("INSERT INTO log(id, name, created_at) VALUES(?, ?, NOW())");
    $stmt->bind_param("ss", $id, $name);
    $result = $stmt->execute();
Run Code Online (Sandbox Code Playgroud)

现在我想忽略时间created_at列,以及获取当前日期(今天的日期)的数据.

我试过使用这个查询,

SELECT * FROM log WHERE created_at = DATE_SUB(CURDATE(), INTERVAL 0 DAY)
Run Code Online (Sandbox Code Playgroud)

但这导致了zero rows selected.

请帮我解决这个问题.

Tim*_*sen 10

一个办法是包created_atDATE(),然后进行比较CURDATE():

SELECT *
FROM log
WHERE DATE(created_at) = CURDATE();
Run Code Online (Sandbox Code Playgroud)

但这具有排除在created_at柱上使用索引的可能性的缺点.我们也可以这样说:

SELECT *
FROM log
WHERE created_at >= CURDATE() AND created_at < CURDATE() + INTERVAL 1 DAY;
Run Code Online (Sandbox Code Playgroud)

这将允许使用索引created_at,尽管它有点冗长.

  • @VishistVVishy如果你在`created_at`列上有一个索引,如果你有一个像'DATE(created_at)`这样的东西,即如果你把它包装在一个函数中,它就不能在查询中使用.我的第二个问题解决了这个潜在的问题. (2认同)