数据库中的列(日期)例如说“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("Y-m-d")
中选择数据库中的所有日期。如果数据库中的日期是“2013-10-14 14:37:38”,我想用2013-10-14选择它。类似于date("Y-m-d%")
。
答案 0 :(得分: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();
P.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();
答案 1 :(得分:3)
无论该列的类型是DATE
,DATETIME
还是TIMESTAMP
,这都将有效,如果有可用的话,它将使用索引:
WHERE date >= CURRENT_DATE
AND date < CURRENT_DATE + INTERVAL 1 DAY
答案 2 :(得分:2)
一个简单的
SELECT * FROM table WHERE date = DATE(NOW())
应该足够了。
或正如Alma指出的那样,
SELECT * FROM table WHERE date = CURDATE()
答案 3 :(得分: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");
答案 4 :(得分:0)
$query_today = $db->prepare("SELECT * FROM table WHERE DATE(date)=DATE(:date)");