在动态 SQL 中,我想每 10 行添加 1 秒
以下查询无效,得到“间隔无效”
select
rownum
,(round(rownum/10,0)+1)
,sysdate + interval '(round(rownum/10,0)+1)' SECOND
from anytable_with_lots_of_rows
where rownum < 100;
任何人 ?谢谢 !
经典方法是除以一天中的秒数,例如
with rn as (
select rownum-1 id from dual connect by level <= 100),
rn2 as (select
id, trunc(id/10) tr_id from rn)
select
id, tr_id,
sysdate + tr_id / (24*3600) my_date
from rn2;
给
ID TR_ID MY_DATE
---------- ---------- -------------------
0 0 28-06-2018 19:05:34
1 0 28-06-2018 19:05:34
2 0 28-06-2018 19:05:34
3 0 28-06-2018 19:05:34
4 0 28-06-2018 19:05:34
5 0 28-06-2018 19:05:34
6 0 28-06-2018 19:05:34
7 0 28-06-2018 19:05:34
8 0 28-06-2018 19:05:34
9 0 28-06-2018 19:05:34
10 1 28-06-2018 19:05:35
11 1 28-06-2018 19:05:35
12 1 28-06-2018 19:05:35
13 1 28-06-2018 19:05:35
14 1 28-06-2018 19:05:35
15 1 28-06-2018 19:05:35
16 1 28-06-2018 19:05:35
17 1 28-06-2018 19:05:35
18 1 28-06-2018 19:05:35
或者,如果您想使用间隔 - 使用该功能NUMTODSINTERVAL
并将除法替换为以下表达式
sysdate + NUMTODSINTERVAL(tr_id,'SECOND') my_date
interval <n> second
只接受文字数字,不接受算术表达式。
但是,您可以这样做:
.... + (round(rownum/10) + 1) * interval '1' second
或获得正确结果所需的任何公式。
请注意,如果您一次需要十行的组,您应该使用“四舍五入”(函数ceil()
)而不是在括号中添加 1。