簡體   English   中英

日期時間和 SELECT * FROM table WHERE date = TODAY

[英]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();

無論列是DATEDATETIME還是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM