好的,首先我确定特定日期的日期整数,然后我需要将随机值更新到dpm_dateto
列:
查询:
select to_char(to_date('15/05/2013','dd/mm/yyyy'), 'J') from dual;
结果:
2456428
现在,我尝试使用以下查询更新dpm_dateto
列:
update t_dailypm
set dpm_dateto =
(select to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J') from dual)
where dpm_loc = 'P2' and dpm_department like '%IN%';
结果:
900 rows updated.
但是,问题是dpm_dateto
列中的每个不同值都使用相同的日期更新。我无法理解这一点。请帮助。
答案 0 :(得分:4)
不要使用子查询。
只需设置= your_expression,如下例所示
Oracle优化子查询并仅对其进行一次计算,但将针对每一行计算表达式:
create table xyz(
abc date
);
insert into xyz
select sysdate from dual
connect by level < 6;
select * from xyz;
ABC
--------
13/07/17
13/07/17
13/07/17
13/07/17
13/07/17
现在:
update xyz set abc = to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J');
select * from xyz;
ABC
--------
13/06/14
13/07/23
13/07/26
13/06/24
13/07/10