【问题标题】:Automatically calculate the date oracle APEX自动计算日期 oracle APEX
【发布时间】:2021-06-22 08:40:06
【问题描述】:

如何根据用户的输入计算日期? 也就是说,根据用户输入的内容,当前日期会增加 3 个月或 5 等。

我尝试向日期选择器添加计算:

  • SUBMISSION_DATE 仅显示当前日期(已实施)
  • DATE_OF_ISSUE 应为 SUBMISSION_DATE +3 个月或 +5 个月,具体取决于用户在其他字段中的输入。

我还使用以下 pl/sql 函数体在该日期添加了一个计算,但它不起作用。

DECLARE
sub_date DATE default null;
BEGIN
if :P75_THESISTYPE =1
then 
sub_date := :P75_SUBMISSION_DATE +6;
else
sub_date := :P75_SUBMISSION_DATE +3;
END IF;
return sub_date;
end;

【问题讨论】:

  • “不工作”是什么意思?引发错误?还是在做什么?此计算将在页面提交时执行,因此在此之前您不会看到它的结果。
  • 我真正想要的是,根据用户的选择,将自动设置提交日期,以便将一定数量的月份添加到当前日期,这就是结果提交日期。
  • 实际发生了什么?
  • 当使用上面提到的 pl/sql 函数体时,我得到这个错误:ORA-06550:第 6 行,第 13 列:PLS-00382:表达式类型错误 ORA-06550:第 6 行,列1:PL/SQL:语句被忽略 ORA-06550:第 8 行,第 13 列:PLS-00382:表达式类型错误 ORA-06550:第 8 行,第 1 列:PL/SQL:语句被忽略
  • 谢谢 - 现在我可以回答这个问题了!

标签: oracle date apex computation


【解决方案1】:

页面项目被视为 VARCHAR2,因此您需要在对它们执行算术之前将它们转换为日期:

DECLARE
  sub_date DATE default null;
BEGIN
  if :P75_THESISTYPE =1
  then 
    sub_date := TO_DATE(:P75_SUBMISSION_DATE) +6;
  else
    sub_date := TO_DATE(:P75_SUBMISSION_DATE) +3;
  END IF;
  return sub_date;
end;
/

【讨论】:

    【解决方案2】:

    @TonyAndrews 有正确的过程,但是当他遵循你最初的陈述时,它不会给出想要的结果。将整数添加到数据中添加的是天数,而不是月数。您需要的是 ADD_Months 函数;所以:

    DECLARE
      sub_date DATE default null;
    BEGIN
      if :P75_THESISTYPE =1
      then 
        sub_date := add_months(to_date(:P75_SUBMISSION_DATE),6);
      else
        sub_date := add_months(to_date(:P75_SUBMISSION_DATE),3);
      end if
      return sub_date;
    end;
    /
    

    当然,以上假设您的变量格式与您的 nls_data_format 匹配。通常充其量是一个危险的假设,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多