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

问题描述 投票:2回答:6

例如,数据库中的列(日期)显示为“ 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();

UPDATE下面没有任何工作。我只想从简单的date("Y-m-d")中选择数据库中的所有日期。如果数据库中的日期为“ 2013-10-14 14:37:38”,我想仅使用2013-10-14进行选择。类似于date("Y-m-d%")

php mysql sql date pdo
6个回答
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();

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

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

ps.s。但就像@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();

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

3
投票

无论列的类型为DATEDATETIME还是TIMESTAMP,这都将有效,并且将使用索引(如果有索引的话:

WHERE date >= CURRENT_DATE
  AND date < CURRENT_DATE + INTERVAL 1 DAY

2
投票

简单

SELECT * FROM table WHERE date = DATE(NOW())

应该足够。

或正如Alma指出的,

SELECT * FROM table WHERE date = CURDATE()

0
投票

$query_today = $db->prepare("SELECT * FROM table WHERE DATE(date)=DATE(:date)");


0
投票

而不是下面的代码:

$query_today = $db->prepare("SELECT * FROM table WHERE date=:date");

使用以下代码:

$query_today = $db->prepare("SELECT * FROM table WHERE DATE_FORMAT(date, '%Y-%m-%d')=:date");

-1
投票
/* if date = 2020-01-01 */
$date = htmlspecialchars(strip_tags($_POST['date']));
$run = $con->prepare("SELECT * FROM `table` WHERE `date`=?");
$run->bindParam(1, $date, PDO::PARAM_STR);
$run->execute();
© www.soinside.com 2019 - 2024. All rights reserved.