我目前在MySQL版本4.0.8數據庫(MyISAM引擎)INT(10)列中存儲日期作爲Unix時間戳。MySQL之間的問題不與Unix時間戳工作
我查詢這些日期使用下面的SQL提取日期範圍之間記錄:
$sql = "SELECT `users`.`real_name`, `users`.`user_value`, `clients`.`client_name`, `clients`.`client_stars`, `timing`.`start_date`, `timing`.`end_date`, `projects`.`project_name`
from timing
LEFT JOIN users on (users.id = timing.user_id)
LEFT JOIN clients on (clients.id = timing.client_id)
LEFT JOIN projects on (projects.project_id = timing.project_id)
WHERE start_date BETWEEN :start_date AND :end_date";
我使用的PDO,因此PARAMS。
我100%確定:start_date和:end_date vars在所有情況下都是正確的,因爲我檢查了這些。此外,start_date並不含糊,並且沒有關於此查詢的警告/通知。
我的問題是,我沒有得到預期的行。如果我詢問2013/11/14午夜和2013/11/15午夜之間的行數,預計結果只會從第14位開始。但是,從15日開始的行也通過了 - 但不是全部。
我也剛剛在1384473600和1384473600之間測試 - 這是在今天午夜到今天午夜之間(如同一時間戳)。
返回的行應該爲0,但它已經返回了今天的所有行(例如返回的第一行的start_date值爲1384524193)!
我錯過了關於運算符在mySQL中的工作原理嗎?當最小值和最大值相同時,它如何返回行?
我已經過測試和測試,並且幾乎每次查詢時,都會返回高於指定天花板之間的行數。
什麼問題?
你有沒有嘗試過:WHERE start_date> =:start_date AND start_data <=:end_date'? – Latheesan
所以只是回聲$ sql – Strawberry