使用 PL/SQL 增加多个时间戳值
Increment Multiple Timestamp Values with PL/SQL
我完全不懂Oracle,但我需要这样写:
MySQL:
SET @serial:=1;
UPDATE table1 SET t = t + INTERVAL (@serial:=@serial+1) SECOND;`
更新所有记录的时间戳并增加一秒。如何在 Oracle 中执行此操作?
问题更新:
我的措辞没有很好地解释我的问题。
我想要一个 (TimeStamp) 的变量。
然后遍历所有记录,每次将此变量递增一秒以进行记录更新。
其实很简单。只要做:
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;
另一种方法是
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 变量,并在 t_update_time 中声明的日期时间上加上 1 秒更新记录。相应地更改 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;
按照我的理解应该是这样的
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
开始
我完全不懂Oracle,但我需要这样写:
MySQL:
SET @serial:=1;
UPDATE table1 SET t = t + INTERVAL (@serial:=@serial+1) SECOND;`
更新所有记录的时间戳并增加一秒。如何在 Oracle 中执行此操作?
问题更新: 我的措辞没有很好地解释我的问题。
我想要一个 (TimeStamp) 的变量。
然后遍历所有记录,每次将此变量递增一秒以进行记录更新。
其实很简单。只要做:
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;
另一种方法是
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 变量,并在 t_update_time 中声明的日期时间上加上 1 秒更新记录。相应地更改 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;
按照我的理解应该是这样的
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