MySQL 选择“日期等于今天”(数据类型为 datetime)

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

272719 次浏览

听起来你需要添加格式到 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 小提琴

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

如果对于 signup_date字段使用了索引,则此查询将使用 index

SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE signup_date >= CURDATE() && signup_date < (CURDATE() + INTERVAL 1 DAY)

你可以把 CONCATCURDATE()一起使用到一天的全部时间,然后在 WHERE条件下使用 BETWEEN进行过滤:

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

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

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