如何在指定的日期范围内更新/插入SQL中的随机日期


How to update/Insert random dates in SQL within a specified Date Range

请原谅我。我是一个绝对的新手,我需要phpmyadmin中这个表的帮助

我的表包含以下列:

Primary_ID, Begin_Date, End_Date, Timestamp

如何在phpmyadmin中更新选定的行,并在指定的日期范围内(例如:一个月中的30天)内随机生成begin_dates和时间戳。例如期望的结果

Primary_id--- Begin_Date -------------Timestamp
1.------------2008-09-02--------------2008-09-02 21:48:09
2.------------2008-09-03--------------2008-09-03 15:19:01
3.------------2008-09-14--------------2008-09-14 01:23:12
4.------------2008-09-27--------------2008-09-27 19:03:59

日期范围介于 2008-09-01 和 2008-09-31 之间。时间是可变的 24 小时

我是新手,所以在phpmyadmin中工作的语法将有很大帮助。

我们正在为一个拥有 500 名会员的健身房网站进行演示,但添加的成员值都具有相同的开始日期和时间。尝试将它们分成数据库中不同的月度注册,例如 50 月在不同日期和时间注册,35 月注册,等等。希望现在更清楚了。谢谢–

当我尝试以下答案之一时,出现此错误: #1064 - 您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的"$randomDate = rand(1,31)"附近使用的正确语法。因此,理想情况下,我可以通过最少的编辑复制并粘贴到phpmyadmin中的代码将不胜感激。如果可能的话,按顺序排列。对于一个完全的假人来理解和执行。

我会从这样的东西开始。其中一堆可以组合在一起,但我把它分开,这样你就能看到我在做什么。

要获取随机数,您可以使用 rand()。获取一个日期、小时、分钟和秒

$randomDate = rand(1,31);
$randomHour = rand(1,24);
$randomMinute = rand(0,59);
$randomSecond = rand(0,59);

您需要前导零(03 而不是 3),以便在需要时可以使用 str_pad 添加它们

$randomDate = str_pad($randomDate, 2, '0',STR_PAD_LEFT);
//The '2' is how many characters you want total
//The '0' is what will be added to the left if the value is short a character

对所有其他随机值执行相同的操作。仅仅因为我喜欢整洁的查询,您接下来应该组成最终的更新字符串。

$newDate = '2008-09-'.$randomDate;
$newTime = $randomHour.':'.$randomMinute.':'.$randomSecond;

现在我不知道您如何确定要更新哪些行,因此我将由您决定。例如,如果您想使用 Primary_id 3 执行此操作,我将向您展示一个查询:

$x = mysql_query("UPDATE yourTable SET Begin_Date='"$newDate'", Timestamp='"$newTime'" WHERE Primary_id = 3");

像这样:

insert into myTable (begin_date) values date_add('2008-09-01', INTERVAL RAND()*30 DAY)

这应该创建一个带有随机begin_date的新行

update myTable set Timestamp = date_add(begin_date, INTERVAL RAND()*1440 MINUTE)

然后,应该将时间戳设置为当天的随机分钟。