2012-11-16 280 views
6

我嘗試以下,但沒有結果:選擇日期範圍

SELECT * 
FROM users_test 
WHERE dateadded >= UNIX_TIMESTAMP('2012-02-01 00:00:00') 
AND dateadded < UNIX_TIMESTAMP('2012-11-01 00:00:00'); 

但我知道有列與範圍內,例如日期

2012-05-11 17:10:08 

有沒有更好的方法來做到這一點?

最後,我想搜索多個參數,儘管不是在同一時間,像今天,昨天,上週,上個月等,也是一個日期範圍和月份範圍

+4

是您的列存儲值作爲一個UNIX時間戳或時間戳(例如'2012-05-11 17:10:08')? 您在該範圍內粘貼了一個列的示例,但它不是UNIX時間戳,這讓我很想知道。您正在將日期與UNIX時間戳進行比較,您可能只需要與時間戳進行比較。 – Maccath

回答

13

你有沒有試過?

SELECT * 
FROM users_test 
WHERE dateadded >= '2012-02-01 00:00:00' 
AND dateadded < '2012-11-01 00:00:00' 

對於我所看到的,看來你的表有存儲在你想看看它(2012-05-11 17:10:08),所以在這種情況下,你將不再需要UNIX_TIMESTAMP以同樣的方式的數據。

我也能看到你想排除從結果第二日(因爲你使用<代替<=),否則使用WHERE dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00'將被罰款,以及...

+3

這就是我的思路。 :) – Maccath

4

只需使用SQL BETWEEN關鍵字。就這樣。

3

試試這個:

SELECT * FROM 
     users_test 
WHERE 
    dateadded BETWEEN '2012-02-01 00:00:00' AND '2012-11-01 00:00:00' 
0
SELECT * FROM table_name WHERE DATE(date_field) between '2015-05-10' and '2015-05-21`