我正在尝试获取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
。
请帮我解决这个问题。
答案 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();