2 つの固定タイムスタンプの間でランダムな日付を生成する方法を探しているときに、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
「そのまま」機能を使用していて、それらがランダムで日付が同期していないことです。
すなわち:
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
ため、データベースに挿入されるときに日付を並べ替えることが唯一の解決策です。
アップデート:
これはマッドフレンド コードを使用して試したものですが、日付はすべて同じです。
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