【问题标题】:Update datetime field randomly according known datetime根据已知日期时间随机更新日期时间字段
【发布时间】:2013-12-12 17:52:32
【问题描述】:

是否可以查询数据库行并根据一个字段(DATETIME)随机将1-3天(更好的工作日)添加到同一行的另一个字段中?

所以查询已知的DATETIME字段,需要从中获取时间,然后随机添加1-3天:

SELECT complete_date 
FROM training 
WHERE tr_id = 18;

AND查询需要更新的字段..

UPDATE training 
SET finalized = (rand + (1-3 days)) 
WHERE tr_id = 18

MySQL Workbench 软件。

【问题讨论】:

  • 随机数是特定于数据库的——您使用的是什么数据库软件?
  • 如果我理解正确,目前您有一个字段完成日期。并且您希望在完成日期后 1-3 天完成另一个字段。我说的对吗?
  • 是的,你是对的。数据库在标签 MySQL 中

标签: mysql sql datetime random


【解决方案1】:
create table training (tr_id integer, complete_date datetime, finalized datetime);

insert into training values(18, NOW(), null);
insert into training values(18, NOW(), null);
insert into training values(18, NOW(), null);
insert into training values(18, NOW(), null);

update training set finalized = DATE_ADD(complete_date, Interval RAND()*24*3 HOUR) where tr_id = 18;

所以你应该在某个日期添加随机数以获得新的“随机日期”。 在我的示例中,我将 0 到 72 小时的随机时间添加到初始日期“完成日期”,您可以使用 SECONDS 或您需要的内容。

仅支持营业日并不容易。 (俄罗斯的纽约假期呢 - 大约 10 天 :)

【讨论】:

    【解决方案2】:

    是的,您需要 INTERVAL 关键字。

    UPDATE training SET finalized = complete_date + INTERVAL FLOOR(1 + (RAND() * 3)) DAY
    

    添加工作日有点困难。看看这个stored procedue

    【讨论】:

    • 太好了,我想谢谢你,但是是否可以只添加工作日,所以不是星期六和星期日的日子? :)
    • 添加工作日有点困难。看看这个stored procedue
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2018-02-09
    • 1970-01-01
    • 2020-09-04
    • 2021-07-30
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多