【问题标题】:Simple Date Arithmetic in Oracle APEXOracle APEX 中的简单日期算法
【发布时间】:2011-12-07 23:58:04
【问题描述】:

在我看来,我需要做的事情非常简单。事实上如此简单,这可能很明显,因此我似乎找不到任何记录如何执行此操作的地方。

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

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

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

但后来我无法将其转换为接受页面项目的值。我已经完成了所有操作和设置,当我尝试用 :P1_DATE_1 替换 sysdate 时,我无法让它发挥作用。我已经使用页面项目尝试了该表达式的许多不同表现形式,但它没有填充第二页项目。

很抱歉这个可能很愚蠢的问题,但如果有人能帮忙,我将不胜感激。谢谢!

【问题讨论】:

  • 如果你想要 2 年,那么to_char(add_months(sysdate,24),'dd-MON-rr') 更好
  • 这一切都很好,但我不想使用 sysdate。我想使用 P1_DATE_1 中的日期作为修改日期。我为 sysdate 发布的方法效果很好

标签: oracle plsql datepicker oracle-apex


【解决方案1】:

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

至于您的动态操作,这是我设置的: 地区:

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

真正的行动:

【讨论】:

  • 谢谢!我认为我一直以来的问题可能是我只是不记得在尝试提取其价值之前提交页面项目......谢谢!
【解决方案2】:

您是否遇到错误?如果是这样,什么错误?由于 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。

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2010-09-22
    • 2011-04-30
    • 2010-10-13
    • 1970-01-01
    • 2022-07-06
    • 2023-03-20
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多