2013-10-25 43 views
0

我試圖運行一個基於日期的查詢來獲取今天的一切,但是具有日期的字段是一個日期時間字段,我無法更改。我的date_modified字段中的值看起來像2013-10-25 07:05:43。我知道查詢沒有日期。如果我只是使用Navicat並運行查詢的where子句:在MySQLi和php中使用類似的命令作爲日期時間字段

WHERE inventory.date_modified like '2013-10-25%' 

它運行良好。我發現了一些想法在其他SO職位,當我試圖把它變成我的PHP代碼:

$today = date("Y-m-d"); $today = '%' . $today . '%'; 

,然後我的where子句是:

WHERE inventory.date_modified like $today 

我得到嘗試的致命錯誤解析一個非對象。我知道今天有一個價值,但我不清楚如何用我的PHP代碼做到這一點?

+1

爲什麼你認爲LIKE查詢會起作用?你爲什麼不簡單地查詢'date_modified BETWEEN'2013-10-25 00:00:00'和'2013-10-25 23:59:59'? –

+0

日期總是會改變,這就是我使用變量的原因。 – Jim

+0

而且? LIKE仍然無法工作。修改與您的變量給出的示例,只需添加時間信息,以便在午夜和23:59:59之間獲得所有內容 - 即代表一天。 –

回答

0

最好的解決辦法是在問題註釋N.B.的。因爲,如果您有date_modified字段的索引,它將被使用。

所以,如果你有日期格式化爲Y-m-d,就像你在$today有,你可以這樣做:

$sql = " 
    ... 
    WHERE inventory.date_modified BETWEEN '$today 00:00:00' AND '$today 23:59:59' 
    ... 
"; 

另一個例子是,使用DATE()功能,獲取日期部分從日期時間:

$sql = " 
    ... 
    WHERE DATE(inventory.date_modified) = '$today' 
    ... 
"; 

,這個例子是不是好,如果你在現場date_modified有指標,因爲它會被忽略,整個表將被掃描。

0

你忘了設置數據庫值引號:

WHERE inventory.date_modified like '$today' 
+0

當我嘗試此操作時,出現意外的變量錯誤,任何其他想法? – Jim

+0

演示如何在PHP中構建WHERE子句。 – andreashager

+0

WHERE inventory.date_modified就像'$ today'limit 0,100 100 – Jim

0

試試這個代碼: -

$today = '2013-10-25'; 

SELECT * FROM inventory WHERE DATE_FORMAT(inventory.date_modified, "%Y-%m-%d") = $today; 
相關問題