如何将X秒添加到SQL中的多行?

时间:2018-08-19 07:07:14

标签: sql oracle

update test1
set start_date = sysdate
where table_id between 223 and 228;

我想以x秒为单位更新这些日期。

所以

  • table_id 223具有2018-08-19 09:10:15
  • table_id 224具有2018-08-19 09:10:25
  • table_id 225具有2018-08-19 09:10:35

类似的东西。我应该如何进行呢?我正在使用sql developer,并且一直在一步一步地进行更新。我不允许在数据库上进行操作或进行其他程序操作,因此必须使用更新查询来执行此操作。有什么办法吗?

4 个答案:

答案 0 :(得分:1)

例如:

SQL> create table test1
  2    (table_id number,
  3     start_date date
  4    );

Table created.

SQL> insert into test1 (table_id)
  2    select 220 + level
  3    from dual
  4    connect by level <= 10;

10 rows created.

SQL> update test1 set
  2    start_date = sysdate + (10 / (24 * 60 * 60)) * rownum
  3  where table_id between 223 and 228;

6 rows updated.

SQL> select * From test1 order by table_id;

  TABLE_ID START_DATE
---------- -------------------
       221
       222
       223 19.08.2018 09:29:47
       224 19.08.2018 09:29:57
       225 19.08.2018 09:30:07
       226 19.08.2018 09:30:17
       227 19.08.2018 09:30:27
       228 19.08.2018 09:30:37
       229
       230

10 rows selected.

SQL>

在此示例中,在(10 / (24 * 60 * 60)) * rownum

  • 10代表增量(10秒)
  • 24 * 60 * 60是一天中的秒数(24小时* 60分钟* 60秒)
  • rownum用作乘法器,因此每一行都有自己的10秒增量

答案 1 :(得分:1)

此查询使用'numToDSInterval()'函数将结果集的行号转换为十秒的间隔:

update test
set start_date = sysdate + 
                 numToDSInterval ( ((rownum-1) * 10), 'second')
where table_id between 223 and 228
;    

答案 2 :(得分:0)

我将使用一些简单的数学运算来使用ID来计算每条记录的偏移,如果它是数字形式的(如您所说的那样,Oracle SQL并不熟悉),但这将是一般的想法:

UPDATE test1
   SET start_date = current_timestamp + numToDSInterval( 10 * (id - 223), 'second' )
 WHERE table_id >= 223 AND table_id <= 228

答案 3 :(得分:0)

另一种类似的方法

mix
.react('resources/assets/js/customer/customer-app.js', 'public/js')
.react( 'resources/assets/js/labourer/labourer-app.js','public/js')   
.sass('resources/assets/sass/app.scss', 'public/css');