2012-12-03 37 views
6

我有這個查詢,我需要選擇兩個日期之間的所有記錄,mysql表格是一個日期時間格式。選擇兩種日期時間格式之間的所有記錄

我試過這個,但沒有奏效。

select * from cdr 
WHERE calldate BETWEEN '2012-12-01' AND '2012-12-03'; 
+0

「但沒有奏效。」你可以說得更詳細點嗎?什麼是錯誤信息或不良結果? –

回答

11

試試這個:

select * from cdr 
WHERE DATE(calldate) BETWEEN '20121201' AND '20121203'; 
+0

非常感謝:) 再次! –

+1

注意,這將會讓你在大餐桌上的表現大打折扣,因爲索引不再有效。 –

+0

這個答案忽略了索引,這是一個不好的做法。 您應該考慮按原樣使用字段值並使用格式轉換日期。 您應該使用@Rohit Suthar的回答。 –

-1

以上將工作的偉大。如果你想添加額外的條件,正常的布爾邏輯與日期/時間一起工作,所以你可以做類似於

... 
where DATE(calldate) < '20121201' AND DATE(calldate) >= '20121203' OR DATE(calldate) = '20121205' 

只是一個簡單的例子。

1

嘗試此查詢 -

SELECT * FROM cdr WHERE calldate BETWEEN str_to_date('2012-12-01','%Y-%m-%d') AND str_to_date('2012-12-03','%Y-%m-%d'); 
+0

這一個實際工作,並且是很好的做法,因爲它會使用給定的格式和使用索引來轉換日期。 –

+1

如果我想添加時間戳,那麼我該如何做。 'str_to_date('2017-10-20 14:00:00','%Y-%m-%d%H:%i:%s')' – virtualLast

相關問題