我不知道甲骨文所有,但我需要寫是這樣的:增量多時間戳值
的MySQL:
SET @serial:=1;
UPDATE table1 SET t = t + INTERVAL (@serial:[email protected]+1) SECOND;`
更新和一秒遞增時間戳爲所有記錄。如何在Oracle中做到這一點?
問題更新: 我的措辭並沒有很好地解釋我的問題。
我想有一個變量(TimeStamp)。
然後遍歷所有記錄,每次增加此變量一秒鐘以進行記錄更新。
我不知道甲骨文所有,但我需要寫是這樣的:增量多時間戳值
的MySQL:
SET @serial:=1;
UPDATE table1 SET t = t + INTERVAL (@serial:[email protected]+1) SECOND;`
更新和一秒遞增時間戳爲所有記錄。如何在Oracle中做到這一點?
問題更新: 我的措辭並沒有很好地解釋我的問題。
我想有一個變量(TimeStamp)。
然後遍歷所有記錄,每次增加此變量一秒鐘以進行記錄更新。
它應該是這樣的按照我的理解
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開始
其實很簡單。只要做到:
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
根據您的更新,它應該b È
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;
哇。你是對的,這很簡單。謝謝 – morne 2015-01-21 11:10:08
好的,只有一個問題。我的錯我沒說得好。不管記錄中的時間如何,我想從一個開始時間更新所有記錄。我將編輯上面的問題。 – morne 2015-01-21 11:14:58