[英]MySQL select between two dates not working as expected
我正在嘗試創建一個查詢,它將 select 兩個日期之間的所有日期
這是我的查詢:
$query = "SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '$date1' AND '$date2' AND D1.D1_ID = D2.D2_ID";
問題是,它沒有返回任何東西,但也沒有產生錯誤
所以我試着像這樣直接將它輸入到 phpMyAdmin
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
AND D1.D1_ID = D2.D2_ID`
然后像這樣
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
像這樣
SELECT * FROM D1
WHERE DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
我只是得到
MySQL 返回一個空結果集(即零行)。 (查詢耗時 0.0003 秒)
是的,我的表存在,列也存在:)
在第一種情況下,缺少結果可能是由於內部連接。 為了使結果在集合中,它需要兩個表中的記錄,即。 除非 d2 在 d2_id 列中也有該 id,否則不會出現來自 d1 的記錄。 要解決此問題,如果這對您的業務邏輯是正確的,請使用left join
。
但是,您的最后一個案例(沒有連接)表明原因是第一個(左)表 d1 中缺少匹配的記錄。
如果沒有完整的數據集,我們無法進一步評論,因為您運行的所有代碼都是完全有效的。
如果您總是想 select 整整一年,那么 select 會更容易,如下所示:
SELECT * FROM D1 WHERE YEAR(DATE_ADDED) = 2011;
請實現以下代碼
SELECT DISTINCT * FROM D1,D2
WHERE D1.DATE_ADDED BETWEEN DATE_FORMAT('2011-01-01','%Y-%m-%d')
AND DATE_FORMAT('2011-12-12','%Y-%m-%d')
AND D1.D1_ID = D2.D2_ID`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.