我正在尝试将varchar数组转换为日期数组。目前,日期是以String的形式从Java类访问,但它需要是一个日期。因此,我需要将varchar数组转换为日期数组。我只能在这里看到有关将字符串转换为日期格式的问题,这不是我想要的。将varchar数组转换为日期数组有何不同?
这是我需要转换过程的变量。
P_IN_GRID_EFFECTIVE_DATE IN P_DVP_CONSTS.T_VCHAR10ARRAY,
答案 0 :(得分:2)
类型和功能:
create type tv as varray(5) of varchar2(15);
create type td as varray(5) of date;
create or replace function v2d (i_varchars in tv)
return td pipelined is
begin
for i in 1..i_varchars.count
loop
pipe row (to_date(i_varchars(i), 'mm/dd/yyyy'));
end loop;
end;
测试:
select * from table(v2d(tv('09/01/2010', '06/15/2015')));
COLUMN_VALUE
------------
2010-01-01
2015-06-15
答案 1 :(得分:2)
你可以循环一个数组并使用它的内容来填充第二个数组;在这种情况下,每个条目都有一个var allRecords = store.getData().getSource().getRange();
调用。作为一个简单的演示:
to_date()
快速测试:
create procedure convert_array(
P_IN_GRID_EFFECTIVE_DATE IN P_DVP_CONSTS.T_VCHAR10ARRAY,
P_OUT_GRID_EFFECTIVE_DATE OUT P_DVP_CONSTS.T_DATEARRAY
) as
begin
P_OUT_GRID_EFFECTIVE_DATE := new P_DVP_CONSTS.T_DATEARRAY();
P_OUT_GRID_EFFECTIVE_DATE.extend(P_IN_GRID_EFFECTIVE_DATE.count);
for i in 1..P_IN_GRID_EFFECTIVE_DATE.count loop
P_OUT_GRID_EFFECTIVE_DATE(i) :=
to_date(P_IN_GRID_EFFECTIVE_DATE(i), 'YYYY-MM-DD');
-- or whatever format your strings are using
end loop;
end convert_array;
/