[英]Datetime and SELECT * FROM table WHERE date = TODAY
例如,数据库中的列(日期)表示“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();
更新下面没有任何工作。 我只想从一个简单的date("Ymd")
选择数据库中的所有日期。 如果数据库中的日期是“2013-10-14 14:37:38”,我只想用 2013-10-14 选择它。 类似date("Ymd%")
。
例如,如果您要搜索今天以外的其他日期:
$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 但就像@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();
无论列是DATE
、 DATETIME
还是TIMESTAMP
类型,这都将起作用,并且将使用索引(如果有可用索引):
WHERE date >= CURRENT_DATE
AND date < CURRENT_DATE + INTERVAL 1 DAY
一个简单的
SELECT * FROM table WHERE date = DATE(NOW())
应该足够了。
或者正如阿尔玛指出的那样,
SELECT * FROM table WHERE date = CURDATE()
而不是下面的代码:
$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");
$query_today = $db->prepare("SELECT * FROM table WHERE DATE(date)=DATE(:date)");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.