我有一张带时间表的临时表。数据从多个表中收集(时间轴操作a,时间轴操作b等):
time
-------------------------------
2015-02-05 10:45:54.13197+01
2015-02-05 10:45:56.422353+01
2015-02-05 10:45:57.518791+01
2015-02-05 10:46:02.03023+01
2015-02-05 10:46:02.0821+01
2015-02-05 10:46:11.584209+01
2015-02-05 10:46:11.627014+01
2015-02-05 10:46:11.653886+01
2015-02-05 10:46:11.688192+01
2015-02-05 10:48:01.465656+01
2015-02-05 10:48:02.337642+01
2015-02-05 12:05:08.088097+01
2015-02-05 12:05:08.922485+01
2015-02-05 12:45:49.313329+01
2015-02-05 12:45:49.363351+01
2015-02-05 12:45:49.382804+01
2015-02-05 12:45:49.40134+01
2015-02-05 12:45:49.416624+01
2015-02-05 12:45:49.434+01
2015-03-16 14:21:31.215+01
2015-03-16 14:22:12.039+01
2015-03-16 14:22:43.088+01
2015-03-16 14:58:00.032+01
2015-06-02 12:53:20.97+02
需要修改数据,以使每个操作在上一个操作后至少2分钟发生。 IE浏览器。两次连续动作之间的最小差异至少为2分钟。
在C,C ++,Java或任何过程语言中,我只是迭代排序的数组并根据先前的值(如果需要)增加值。
如何在SQL或PSQL中执行此操作?
答案 0 :(得分:0)
你有几个选择
您可以使用pg_sleep(秒)例如SELECT pg_sleep(120);
参考postgresql 9.5 pg_sleep
PgAgent Ref PgAgent
一个shell脚本(这可能会对您有所帮助)stackoverflow question 31382504
您可以设置一个cron作业Ref How to create a Cron job
或 plsql Ref postgresql 9.5 pgSQL control structures
中的控制结构一切顺利
答案 1 :(得分:0)
您应该查看least()
和greatest()
。您可能想要执行以下操作:
UPDATE some_table SET some_time=greatest(some_time,(SELECT previous_time FROM ... ORDER BY previous_time DESC LIMIT 1)+'2 minute'::interval);