自动计算日期oracle APEX

问题描述

如何根据用户的输入计算日期? 也就是说,根据用户输入的内容,将在当前日期上添加 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;

解决方法

页面项目被视为 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;
/
,

@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 匹配。通常充其量只是一个危险的假设,

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...