2013-11-27 107 views
1

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

所以查询从需要得到时间,然后随机加入1-3天已知DATETIME领域:

SELECT complete_date 
FROM training 
WHERE tr_id = 18; 

,以及对于需要更新的领域查询..

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

MySQL Workbench软件。

+0

随机数是特定于数据库的 - 您使用的是哪种数据库软件? – craiglm

+0

如果我理解正确,目前你有一个字段完整的日期。 ,并且您希望在完成日期后的1-3天内完成另一个字段的定稿。我对吗? – Shann

+0

是的你是对的。和数据库在标签MySQL – Sangsom

回答

3

是的,你需要INTERVAL关键字。

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

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

+0

伟大的,我想要感谢你,但它可能只增加商务日,所以不是星期六和星期日的日子? :) – Sangsom

+0

增加工作日有点困难。看看这个[存储的程序](http://stackoverflow.com/questions/17731260/mysql-function-to-add-a-number-of-working-days-to-a-datetime#17731608)。 –

+0

好吧,我会检查它,无论如何非常感谢)有一个愉快的一天! – Sangsom

0
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小时的随机数添加到初始日期'complete_date',您可以使用SECONDS或您需要的。

仅支持商业日并不那么容易。 (在俄罗斯纽约hollidays呢?大约10天:)