119

我正在尝试运行一个 mysql select 语句,它查看今天的日期,只返回当天注册的结果。我目前尝试了以下方法,但它似乎不起作用。

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
    FROM users 
    WHERE users.signup_date = CURDATE()

我已经修改了我的SELECT声明,谢谢大家。

SELECT id FROM users WHERE DATE(signup_date) = CURDATE()

4

5 回答 5

235
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE DATE(signup_date) = CURDATE()
于 2012-10-01T17:07:27.457 回答
38

如果你有它的signup_date字段,这个查询将使用索引

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
    FROM users 
    WHERE signup_date >= CURDATE() && signup_date < (CURDATE() + INTERVAL 1 DAY)
于 2012-10-01T17:09:02.710 回答
15

听起来您需要将格式添加到WHERE

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE DATE_FORMAT(users.signup_date, '%Y-%m-%d') = CURDATE()

请参阅带有演示的 SQL Fiddle

于 2012-10-01T17:07:21.353 回答
1

您可以在一天中的整个时间使用CONCATwith ,然后使用in条件进行过滤:CURDATE()BETWEENWHERE

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE (users.signup_date BETWEEN CONCAT(CURDATE(), ' 00:00:00') AND CONCAT(CURDATE(), ' 23:59:59'))
于 2020-06-22T21:31:19.407 回答
0

这是查找日期的简单代码

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d') 
FROM users 
WHERE DATE_FORMAT(users.signup_date, '%Y-%m-%d') = CURDATE()
于 2021-07-30T04:30:45.840 回答