MySQL选择datetime字段,其中date等于今天

V4n*_*ll4 6 php mysql datetime

我正在尝试选择日期等于今天的日期时间字段.但是,查询永远不会返回任何行.

我在我的数据库中有这一行:

id    booked_at
1     2015-08-05 09:10:56
Run Code Online (Sandbox Code Playgroud)

我正在使用的查询是:

select date(`booked_at`) from `booking_dates` where booked_at = CURDATE();
Run Code Online (Sandbox Code Playgroud)

为什么这不会返回上面的行?

Jan*_*Jan 14

你必须剥去时间部分booked_at因为2015-08-05 09:10:56不等于2015-08-05.试试这个:

select date(booked_at) from booking_dates where date(booked_at) = CURDATE();
Run Code Online (Sandbox Code Playgroud)

  • 这种方法的缺点是您不能使用具有作用于列的函数的索引.但优点是它易于阅读. (5认同)

mir*_*ong 7

要在列上使用索引booked_at

SELECT date(booked_at)
FROM booking_dates
WHERE booked_at >= CURDATE()
    AND booked_at < CURDATE() + INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)