2015-06-20 110 views
1

我有這個疑問:的Sql之間有兩個

SELECT * 
FROM some_table 
WHERE id != 1 AND 
     (event_date BETWEEN '20/06/2015' AND '01/07/2015') 
ORDER BY the_date 

結果爲0。 如果我嘗試此查詢:

SELECT * 
FROM events 
WHERE id != 1 AND 
     (event_date BETWEEN '20/06/2015' AND '29/06/2015') 
ORDER BY the_date 

它的工作原理。

兩個月(Juny和7月)之間的區別是什麼問題。

謝謝。

+0

,並在第二個你是從'events'選擇:假設event_datedate列,使用str_to_date的字符串文字轉換爲日期。這可能是相關的嗎? –

+0

不,只是錯誤。 –

回答

0

在ISO標準的YYYY-MM-DD格式寫日期常量:

SELECT * 
FROM some_table 
WHERE id != 1 AND 
     event_date BETWEEN '2015-06-20' AND '2015-07-01' 
ORDER BY the_date 
+0

但我的數據庫中的日期是這種格式:10/07/2015 –

+0

@DorBenZaken。 。 。你應該使用'date'作爲在數據庫中存儲日期的數據類型。輸出表示不重要。如果您使用字符串存儲日期,則修復數據。 –

0

MySQL使用下列數據類型保存日期:

DATE - 格式YYYY-MM-DD

DATETIME - 格式:YYYY-MM-DD HH:MI:SS

TIMESTAMP - 格式:YYYY-MM-DD HH:MI:SS

嘗試更改日期格式

1

看起來像是按照字典順序比較這些日期。在你從`some_table`選擇第一個查詢

SELECT * 
FROM  some_table 
WHERE id != 1 AND 
     (event_date BETWEEN STR_TO_DATE('20/06/2015', '%d/%m/%Y') AND 
          STR_TO_DATE('01/07/2015', '%d/%m/%Y')) 
ORDER BY the_date 
+0

不工作 - 仍爲0。 –