在寻找在两个固定时间戳之间生成随机日期的方法时,我在 SO 上发现了这个很棒的功能:
function randomDate($start_date, $end_date)
{
// Convert to timestamps
$min = strtotime($start_date);
$max = strtotime($end_date);
// Generate random number using above bounds
$val = rand($min, $max);
// Convert back to desired date format
return date('Y-m-d H:i:s', $val);
}
但我正在寻找一种按顺序生成日期的方法(开始日期到结束日期),因为我已经使用它来生成要插入数据库的日期。
问题是我的帖子是ORDER BY id DESC
“按原样”使用功能,因为它们是随机的,日期最终不同步。
IE:
post id 4 - date = 2010-07-11 14:14:10
post id 3 - date = 2012-02-22 18:23:21
post id 2 - date = 2011-03-17 13:52:47
post id 1 - date = 2011-08-14 15:33:50
我需要它们与帖子 ID 同步。
现在您的想法为什么不将查询更改为ORDER BY date DESC
?...嗯,这会弄乱我已经编写的 99% 的代码,因为还有其他列/行依赖于它ORDER BY id DESC
,因此在插入数据库时对日期进行排序是唯一的解决方案。
更新:
这是我尝试使用 madfriend 代码但所有日期都相同我哪里出错了?
function randomDate($startdate, $enddate){
$min = strtotime($startdate);
$max = strtotime($enddate);
$val = rand($min, $max);
return date('Y-m-d H:i:s', $val);
}
$query = "SELECT * FROM foo";
$num = mysql_num_rows(mysql_query($query));
$randate = randomDate('2010-07-12 09:13:40', '2012-06-12 09:13:40');
$dates = array($randate);
for ($i = 0; $i < $num; $i++) {
$dates[] = randomDate($startdate, $enddate);
}
sort($dates);
while($date = array_shift($dates)) {
$update = "UPDATE foo SET date='{$date}'";
mysql_query($update);
}
加上得到
Notice: Undefined variable: startdate