以下是一个表格,用于显示媒体播放的时间.所以基本上它有一个开始时间(开始),轨道的长度(clip_length),以及它何时结束(结束=开始clip_length),最后是轨道的位置.
|starts | ends |position |file_id| clip_length |2013-08-30 22:00:00 | 2013-08-30 22:03:08 |0 |16 |00:03:08.081768 |2013-08-30 22:03:08 | 2013-08-30 22:06:33 |1 |17 |00:03:25.436485 |2013-08-30 22:06:33 | 2013-08-30 22:09:07 |2 |7 |00:02:33.79968 |2013-08-30 22:09:07 | 2013-08-30 22:12:21 |3 |3 |00:03:14.020273 |2013-08-30 22:12:21 | 2013-08-30 22:15:31 |4 |8 |00:03:10.466689
我想要做的是添加一个记录,比如说position = 2,如下所示.我已经能够增加位置,但问题在于时间都搞砸了.
|starts | ends |position |file_id|clip_length |2013-08-30 22:00:00 | 2013-08-30 22:03:08 |0 |16 |00:03:08.081768 |2013-08-30 22:03:08 | 2013-08-30 22:06:33 |1 |17 |00:03:25.436485 |2013-08-30 22:06:33 | 2013-08-30 22:09:07 |2 |7 |00:02:33.79968 |2013-08-30 22:06:33 | 2013-08-30 22:11:03 |3 |1 |00:04:30.006958 |2013-08-30 22:09:07 | 2013-08-30 22:12:21 |4 |3 |00:03:14.020273 |2013-08-30 22:12:21 | 2013-08-30 22:15:31 |5 |8 |00:03:10.466689
因此可以使用第一个开始时间..作为点00,并添加clip_length以开始并保存到第一个开始时间.然后对于第二个使用第一个结束值作为开始并递归地执行此操作直到结束(在位置之后).
提前致谢..
解决方法
SQL Fiddle
update clip c set starts = s.starts,ends = s.ends from ( select starts,starts + clip_length as ends,file_id,position from ( select '2013-08-30 22:00:00'::timestamp + sum(clip_length) over(order by position) - clip_length as starts,clip_length,position from clip ) s ) s where c.file_id = s.file_id
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。