从列中减去当前日期以显示在oracle apex经典报表中

时间:2020-09-16 11:38:55

标签: oracle-apex

我有一个非常简单的问题,但是由于我不熟悉SQL或PL / SQL,所以我不知道要这样做。

在我的Oracle APEX应用程序中,通过将本地数据库/ SQL查询设置为源,我正在将表中的数据加载到CLASSIC REPORT中。

我必须从存储在表中的2列数据中提取4列。我可以使用以下简单语句加载3,而不会出现任何问题:

Select TaskName, DueDate, DueDate - 3 as ReminderDate

from table_name

第四列应为“ RemainingDays”,它等于DueDate-当前日期,我尝试在上述语句中编写DueDate-Sys_date和DueDate-current_date以获取第四列,但可能不是我得到错误的正确方法所有4列。 (我正在以基本的excel / dax方式进行操作)。这里有帮助吗?

1 个答案:

答案 0 :(得分:1)

从另一个日期减去一个日期时,Oracle返回一个数字,即两个日期之间的天数。

使用 SYSDATE CURRENT_DATE 时要注意的一件事是,如果用户与数据库不在同一时区,则可能会得到不同的结果。 SYSDATE 返回数据库的当前时间。 CURRENT_DATE 返回用户的当前时间,无论他们处于哪个时区。

如果可能的话,请尝试使用SQL Developer之类的工具构建查询,使其在此处运行,然后在APEX中构建经典报表。如果您仍然收到错误,请共享您收到的错误以及正在使用的查询。

示例

--Start of sample data
WITH
    t (task_name, due_date)
    AS
        (SELECT 'task1', DATE '2020-9-30' FROM DUAL
         UNION ALL
         SELECT 'task2', DATE '2020-9-28' FROM DUAL)
--End of sample data
SELECT task_name,
       due_date,
       due_date - 3                   AS reminder_date,
       ROUND (due_date - SYSDATE,2)     AS days_remaining
  FROM t;

结果

   TASK_NAME     DUE_DATE    REMINDER_DATE    DAYS_REMAINING
____________ ____________ ________________ _________________
task1        30-SEP-20    27-SEP-20                    13.66
task2        28-SEP-20    25-SEP-20                    11.66
相关问题