2011-08-05 166 views
1

我试图实现从随机日期范围表中选择。像随机日期范围选择

SELECT * FROM my_table WHERE timestamp 
BETWEEN <random_date> AND <the_same_random_date> - INTERVAL 1 DAY 

这样我应该选择一个随机日期的1天的时间间隔。有什么建议么?

更新:所以随机查询可能有如下那些相同的效果:

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-08-05 00:00' AND '2011-08-05 00:00' - INTERVAL 1 DAY 

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-08-12 14:30' AND '2011-08-12 14:30' - INTERVAL 1 DAY 

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-05-11 06:15' AND '2011-05-11 06:15' - INTERVAL 1 DAY 

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-03-03 21:11' AND '2011-03-03 21:11' - INTERVAL 1 DAY 
+0

你是否需要所有行的随机日期? – Karolis

+0

我需要相同的查询相同的随机日期。我已经更新了这个问题,你能否看到我的更新。 – pars

回答

1
SELECT * 
FROM 
    my_table 
    CROSS JOIN (SELECT FROM_UNIXTIME(RAND() * 2147483647) random_date) rd 
WHERE 
    timestamp BETWEEN (rd.random_date - INTERVAL 1 DAY) AND rd.random_date 
+0

非常感谢你的答案。 – pars

1

在使用期间,较小的(早期)值必须是第一位的。例如,而不是

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-08-05 00:00' AND '2011-08-05 00:00' - INTERVAL 1 DAY 

您可能需要使用

SELECT * FROM my_table WHERE timestamp 
BETWEEN '2011-08-05 00:00' - INTERVAL 1 DAY AND '2011-08-05 00:00' 

你问如何使用MySQL来生成这些随机的日期?或者你只是想知道为什么你的查询不起作用?如果你想要生成随机日期,Karolis的答案应该为你准备好。

+0

我在找Karolis的答案。但是谢谢你的提示:“较小(较早)的值必须首先出现”。这也为我节省了很多时间 – pars