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

时间:2017-12-31 11:35:26

标签: 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();

现在我想忽略 created_at 列中的时间并检索当前日期的数据(今天的日期)。< / p>

我尝试使用此查询,

SELECT * FROM log WHERE created_at = DATE_SUB(CURDATE(), INTERVAL 0 DAY)

但这导致zero rows selected

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:10)

一种选择是用created_at包裹DATE(),然后与CURDATE()进行比较:

SELECT *
FROM log
WHERE DATE(created_at) = CURDATE();

但这样做的缺点是无法在created_at列上使用索引。我们也可以这样说:

SELECT *
FROM log
WHERE created_at >= CURDATE() AND created_at < CURDATE() + INTERVAL 1 DAY;

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

答案 1 :(得分:2)

这也可行

SELECT *
FROM log
WHERE  DATE(created_at, '%Y-%m-%d')  = CURDATE();