将varchar数组转换为日期array-pl sql

时间:2015-07-09 14:08:38

标签: arrays oracle date plsql varchar

我正在尝试将varchar数组转换为日期数组。目前,日期是以String的形式从Java类访问,但它需要是一个日期。因此,我需要将varchar数组转换为日期数组。我只能在这里看到有关将字符串转换为日期格式的问题,这不是我想要的。将varchar数组转换为日期数组有何不同?

这是我需要转换过程的变量。

P_IN_GRID_EFFECTIVE_DATE  IN P_DVP_CONSTS.T_VCHAR10ARRAY,

2 个答案:

答案 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;
/