MySQL选择日期等于今天

时间:2012-10-01 16:59:17

标签: mysql

我正在尝试运行一个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()

5 个答案:

答案 0 :(得分:151)

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

答案 1 :(得分:23)

如果您有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)

答案 2 :(得分:11)

听起来您需要将格式添加到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 with Demo

答案 3 :(得分:1)

您可以在一天中的整个时间使用CONCATCURDATE(),然后在BETWEEN条件下使用WHERE进行过滤:

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'))

答案 4 :(得分:0)

这是一个查找日期的简单代码

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