我發現原來這巨大作用,同時尋找一種方式來產生兩個固定時間戳之間的隨機日期:PHP/MySQL的指令的隨機日期
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
並且使用「原樣」功能,因爲它們是隨機的,日期最終不同步。
即:
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
你的意思是與帖子ID同步嗎?你能提供更多信息嗎? – drupality 2012-07-28 15:46:34
@drupality他意味着更大的ID的帖子應該有更大的時間戳 – madfriend 2012-07-28 15:47:05
@Anna Riekic'如此排序數據庫中插入的日期是唯一的解決方案',可能是這阻礙了你。 – 2012-07-28 15:57:03