2013-10-14 153 views
2

例如,數據庫中的列(日期)表示「2013-10-14 14:37:38」。PHP/MySQL/PDO:SELECT * FROM table WHERE date = TODAY

如何編輯$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

是否DATE(DATE_FIELD),而在MySQL中的時間不返回日期? – Fred

回答

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。秒。但如@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

是的,這個工作。非常感謝! :D – Treps

+1

Np mate;)+我已經添加了純SQL示例來獲取今日記錄。 –

+0

不太明白索引部分。你想解釋它嗎? – Treps

2

簡單

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

應該足夠了。

或者像阿爾瑪指出,

SELECT * FROM table WHERE date = CURDATE() 
+1

這是爲什麼?發現'CURDATE()' –

+0

沒有工作..我必須對變量('$ todaysDate')做些什麼嗎? – Treps

+0

DATE(NOW())做詭計 –

3

這將工作列是否DATE類型,DATETIMETIMESTAMP,並會使用索引,如果有一個可用:

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

OP只想獲取當前日期的記錄而不是下一個日期。 –

+0

@BrokenHeartღ正是。這將表明這一點。注意'<' –

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"); 
+0

這不會使用任何索引並且會掃描整個表格。 –

+2

@ypercube use在代碼中定義了他/她正在使用當前日期'$ query_today-> bindParam(「:date」,$ todaysDate)''可能你對PDO沒有想法。這是綁定PDO中參數值的方法。 –

+1

我在說'DATE_FORMAT('%Y-%m-%d',日期)'部分。這將使任何索引的使用無效。 –

0

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

相關問題