所以我想知道如果我遇到了一個應該或多或少明顯的陷阱。MySQL內部日期到datetime轉換。 PHP(Zend Framework 1.11)作爲中間件
因此,讓我們說我們有一個名爲dateField
的數據庫字段,它在datetime中。我們還假設表中的所有記錄都有這個值:2013-10-15 13:15:46
。
現在我們想提取日期範圍內的記錄。我們在網站前端使用2013-10-15(yyyy-mm-dd
)格式。 (不,SQL注入是不可能的,它通過一個PDO:D)
我們還假設select的where語句是這樣插入的: $ select-> where('dateField> =?',$ dateFrom); $ select-> where('dateField < =?',$ dateTo);
所以,當我們有一系列這樣的:
來源: 2013年10月10日要:二○一三年十月一十六日一切正常。
但是像這樣的表達式: 來源: 2013-10-15 要: 2013-10-15就說明沒有結果! :d
我猜測的MySQL 內部轉換我的日期類型2013-10-15到2013-10-15 00:00:00和我的WHERE子句變爲:
SELECT .... WHERE dateField <= 2013-10-15 00:00:00 AND dateField >= 2013-10-15 00:00:00;
當然在這種情況下2013-10-15 13:15:46是不是在我的WHERE子句。 :d:d
我通過僅比較的日期部分已經解決了這個問題:
$select->where('DATE(dateField) >= ?', $dateFrom);
$select->where('DATE(dateField) <= ?', $dateTo);
但我的問題是:
任何人都可以解釋一點關於MySQL的內部日期/ datetime轉換(低級別oprations)?
這個問題是否可以作爲社區wiki的一個很好的補充?