Oracle APEX中的简单日期算法

时间:2011-12-07 15:18:48

标签: oracle plsql datepicker oracle-apex

在我看来,我需要做的事非常简单。事实很简单,它可能是显而易见的,因此我似乎无法找到任何记录如何做到这一点的地方。

我需要的是获取日期选择器页面项目(:P1_DATE_1)的值,并通过动态操作设置第二个日期选择器页面项目的值(:P1_DATE_2)。 (:P1_DATE_2)的值应该是2年,或730天,大于(:P1_DATE_1)的值。所以我需要的只是一个简单的'+730'表达吗?

我使用sysdate作为此计算的开始日期。下面的PL / SQL表达式给出了适当的输出:

    to_char(sysdate + 730,'dd-MON-rr') 

但是我无法将其转换为接受页面项的值。我已经有了动作和一切设置当我尝试替换时,我无法使其正常运行:P1_DATE_1 for sysdate。我已使用页面项目尝试了该表达式的许多不同表现形式,但它没有填充第二页面项目。

对不起这个可能很愚蠢的问题,但是如果有人能提供帮助我会很感激。谢谢!

2 个答案:

答案 0 :(得分:2)

@Justin Cave是正确的:页面项中的所有值都被视为varchar2

至于你的动态动作,这就是我设置的: 区域:

items

动态操作(日期2添加):

dynamic action

真实行动:

true action

答案 1 :(得分:1)

您收到错误了吗?如果是这样,有什么错误?由于APEX中的页面项始终是字符串,因此您需要在对其进行日期算术之前将它们转换为日期。假设P1_DATE_1也是DD-MON-RR格式,这样的事情应该有效。

to_char( add_months( to_date( :P1_DATE_1, 'DD-MON-RR' ),
                     24 ),
         'DD-MON-RR' )

如果你没有收到错误而第二项只是没有违约,我的猜测是你有一个操作顺序问题。当您运行第二个项目的初始化代码时,您确定第一个项目实际上设置为非NULL值吗?如果您尝试根据人在第一个日期选择器中选择的值在第二个项目中设置值,则您需要提交页面,或者您需要一些Javascript。