2012-11-16 247 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`