【问题标题】:How to update/Insert random dates in SQL within a specified Date Range如何在指定日期范围内更新/插入 SQL 中的随机日期
【发布时间】:2012-06-03 00:51:01
【问题描述】:

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

我的表有以下列:

Primary_ID, Begin_Date, End_Date, Timestamp

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

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 名会员的健身房网站制作演示文稿,但添加的会员值都具有相同的开始日期和时间。尝试在数据库中将它们分成不同的月度注册,例如8 月不同日期和时间注册的50 人,10 月的35 人等。希望现在更清楚。谢谢 -

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

【问题讨论】:

  • 您能否说明您要更新的内容?
  • 不知道你在做什么,但无论你最终做什么,无疑都需要使用 MySQL 的 date/time functions
  • 我们正在为一个有 500 名会员的健身房网站制作演示文稿,但添加的会员值都具有相同的开始日期和时间。尝试在数据库中将它们分成不同的月度注册,例如8 月不同日期和时间注册的50 人,10 月的35 人等。希望现在更清楚。谢谢
  • Flagged as duplicate. 另外,您最初的反应很不专业,我认为您不值得回答。

标签: php sql phpmyadmin


【解决方案1】:

我会从这样的事情开始。一堆这些可以合并,但我把它分开了,所以你可以看到我在做什么。

要获取随机数,可以使用 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");

【讨论】:

  • 谢谢,但令人困惑。我是个新手。我的目标是手动选择行并将所需的命令应用于它们,但是您编写的语法似乎在 phpmyadmin 中不起作用。 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '$randomDate = rand(1,31)' 附近使用正确的语法。因此,理想情况下,我可以通过最少的编辑复制并粘贴到 phpmyadmin 中的代码将不胜感激.如果可能,按顺序排列。对于一个完全理解和执行的假人。谢谢
【解决方案2】:

类似:

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)

那么应该将时间戳设置为当天的随机分钟。

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 2011-05-31
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2021-07-10
    • 2017-04-21
    相关资源
    最近更新 更多