2011-03-11 133 views
0

我在MySql表中有一個類型爲datetime的列。存儲的值是這樣的:基於日期時間列的查詢記錄

2008-02-15 17:21:56 
2008-02-15 17:22:02 
2008-02-15 17:22:03 

現在我想查詢基於此列中的某些記錄,但我只有日期部分不是時間的一部分。 所以我在zend中像這樣查詢。

$select->where('tableName.columnName = ?', '2008-02-15'); 

但它不匹配任何記錄。我如何查詢沒有時間的部分。

感謝

回答

3

試試這個WHERE DATE(tableName.columnName) = '2008-02-15'

+0

它正在工作。謝謝 – Awan 2011-03-11 09:54:32

2

@Shota提供了將工作中的答案,但是它會阻止MySQL的使用在datetime列的任何索引由於有上每一行被稱爲DATE函數的表格來查看它是否匹配。

如果您將時間範圍硬編碼到查詢中,它會得到相同的結果,並且仍然允許使用索引。

例如。 $select->where('tableName.columnName >= ? AND tableName.columnName <= ?', '2008-02-15 00:00:00', '2008-02-15 23:59:59');

請注意我可能PHP語法錯誤,但你應該明白了。

+0

謝謝。在某些情況下,這也是一個很好的解決方案。 – Awan 2011-03-11 09:54:11