PHP/MySQL/PDO:SELECT*FROM表WHERE date = TODAY

Tre*_*eps 2 php mysql sql pdo date

例如,数据库中的列(日期)显示为"2013-10-14 14:37:38".

如何编辑$todaysDate以显示今天的所有日期?我知道我必须在某个地方使用%,但我已经尝试了很多方法而没有成功.:/

我的代码如下:

$todaysDate = date("Y-m-d");

$query_today = $db->prepare("SELECT * FROM table WHERE date=:date");
$query_today->bindParam(":date", $todaysDate);
$query_today->execute();
Run Code Online (Sandbox Code Playgroud)

更新 以下任何内容均无效.我只想从简单的数据库中选择所有日期date("Y-m-d").如果数据库中的日期是"2013-10-14 14:37:38",我想用2013-10-14选择它.有点像date("Y-m-d%").

Gla*_*vić 6

例如,如果您将搜索今天旁边的其他日期:

$todaysDate = date("Y-m-d"); # or any other date
$query_today = $db->prepare("SELECT * FROM table WHERE DATE(date) = :date");
$query_today->bindParam(":date", $todaysDate);
$query_today->execute();
Run Code Online (Sandbox Code Playgroud)

例如,仅适用于当前日期:

$query_today = $db->prepare("SELECT * FROM table WHERE DATE(date) = CURDATE()");
$query_today->execute();
Run Code Online (Sandbox Code Playgroud)

ps但是像@ypercube说的那样,如果你在日期字段上有索引,他的例子将使用该索引.

$todaysDate = date("Y-m-d");
$query_today = $db->prepare("SELECT * FROM table WHERE date >= :date AND date < DATE_ADD(:date, INTERVAL 1 DAY)");
$query_today->bindParam(":date", $todaysDate);
$query_today->execute();
Run Code Online (Sandbox Code Playgroud)

要么

$query_today = $db->prepare("SELECT * FROM table WHERE date >= CURDATE() AND date < DATE_ADD(CURDATE(), INTERVAL 1 DAY)");
$query_today->execute();
Run Code Online (Sandbox Code Playgroud)


ype*_*eᵀᴹ 5

无论列的类型是DATE,这都将起作用,DATETIME或者TIMESTAMP将使用索引(如果有可用的索引):

WHERE date >= CURRENT_DATE
  AND date < CURRENT_DATE + INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)