簡體   English   中英

兩個日期之間的 MySQL select 未按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM