使用PL / SQL增加多个时间戳值

时间:2015-01-21 11:05:33

标签: oracle plsql

我根本不了解Oracle,但我需要写下这样的东西:

MySQL:

  SET @serial:=1;  
  UPDATE table1 SET t = t + INTERVAL (@serial:=@serial+1) SECOND;`

为所有记录更新并增加一秒的时间戳。如何在Oracle中执行此操作?

问题更新: 我的措辞并不能很好地解释我的问题。

我想要一个(TimeStamp)变量。

然后检查所有增加此变量的记录,每次记录更新一次。

3 个答案:

答案 0 :(得分:2)

另一种方式是

update table1 set t= t + interval '1' second;

详细了解Interval literals


根据您的更新,它应该是

DECLARE
    t_update_time date := sysdate;  
BEGIN
    update table1 set t=t_update_time + interval '1' second;
END;

此片段将当前日期时间分配给t_update_time变量,并将记录更新为1秒,添加到t_update_time中声明的日期时间。相应地更改t_update_time分配。


没有PL / SQL开关,它应该是

update table1 set t=to_date('21.01.2015 09:00:00','dd.mm.rrrr hh:mi:ss') + interval '1' second;

答案 1 :(得分:2)

根据我的理解,它应该是这样的

DECLARE
    serial number := 1;
BEGIN
    update table1 set t= t + (( serial + rownum - 1 )/86400);
END;

这将增加如下

1st row -> 1 sec
2nd row -> 2 sec
.
.
nth row -> nsec

虽然serial从1开始

答案 2 :(得分:1)

实际上这很简单。只是做:

update table1 set t = t + 1/86400;

更新问题后,您可以执行以下操作:

DECLARE
    t_serial number;
    cursor c is select * from table1 for update of t;
    cr table1%rowtype;
BEGIN
    t_serial := 1;
    for cr in c loop
       UPDATE table1 SET t = t_serial/86400 WHERE CURRENT OF c;
       t_serial := t_serial + 1;
    end loop;
END;