我有一个小脚本,每天展示一种智慧。
所以我有三列。
Id wisdom timestamp
1 wisdon 1 4/1/2012
2 wisdon 2 4/1/2012
3 wisdon 3 4/2/2012
我想为每一天获取一个智慧数组
我浏览了一下你的网站,但不幸的是我没有找到与我想要的相似的东西。
我还得到了下面的代码
$sql = mysql_query("SELECT DISTINCT id FROM day_table group by timestamp");
但这也不起作用。有什么想法吗?
可以做一个24小时更新智慧日期的计数器吗?请帮帮我。
发布于 2012-04-02 02:00:25
您可以创建另一个名为wisdom_of_day
的表
该表将包含以下列: id、wisdom_id、date
基本上每天你都可以从你的智慧表中随机选择一个智慧,并将其插入智慧日表中。您还可以向日期列添加约束,使其不同。重要的是,它是一个日期列,而不是时间戳,因为您并不关心时间。
然后,您可以通过基于日期进行查询来检索当天的智慧。
我可能读错了您的问题,您只想为每一天选择一种智慧,但您希望显示多天,并希望从表中获取数据。
如果是这样,那么查询不起作用的原因是因为您是按照包含日期和时间的时间戳进行分组的。您需要按日期对其进行分组,以便按您所需的方式进行分组。
下面是一个查询,它将正确地按日期分组。只有当您有一个时间戳字段并且没有在int列上存储unix时间戳时,这才会起作用。
select id, wisdom, date(timestamp) date_only from day_table group by date_only order by date_only asc;
嗯,我注意到你的时间戳值是某种日期格式,可能是一个字符串?如果是这样的话,上面的查询可能不会工作。
发布于 2012-04-02 01:54:58
自1970年以来首次计算天数
SELECT DATEDIFF(CURDATE(), '1970-01-01')
然后在RAND中插入此编号,例如:
SELECT * FROM table ORDER BY RAND(15767) LIMIT 1;
以数字为参数的随机数是确定性的。
完整查询:
SELECT * FROM table ORDER BY RAND((SELECT DATEDIFF(CURDATE(), '1970-01-01'))) LIMIT 1;
https://stackoverflow.com/questions/9966712
复制相似问题