2

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

4

5 回答 5

7

例如,如果您要搜索今天以外的其他日期:

$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();
于 2013-10-14T13:46:56.487 回答
5

This will work whether the column is of type DATE, DATETIME or TIMESTAMP and will use an index, if there is one available:

WHERE date >= CURRENT_DATE
  AND date < CURRENT_DATE + INTERVAL 1 DAY
于 2013-10-14T13:17:31.503 回答
2

一个简单的

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

应该足够了。

或者正如阿尔玛指出的那样,

SELECT * FROM table WHERE date = CURDATE()
于 2013-10-14T13:15:21.080 回答
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");
于 2013-10-14T13:19:18.593 回答
-1

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

于 2013-10-14T13:21:13.667 回答